| 16 | |
| 17 | @classmethod |
| 18 | def detect(cls, errMsg): |
| 19 | if cls.lineCount <= 50: |
| 20 | cls.lineCount += 1 |
| 21 | |
| 22 | if "UnsupportedClassVersionError" in errMsg: |
| 23 | cls.msg += "Java 版本不正确,请更换 Java。\n" |
| 24 | a = int( |
| 25 | errMsg[ |
| 26 | errMsg.index("(class file version ") + 20 : errMsg.index( |
| 27 | "(class file version " |
| 28 | ) |
| 29 | + 22 |
| 30 | ] |
| 31 | ) |
| 32 | |
| 33 | versionMapping = { |
| 34 | 52: "Java 8", |
| 35 | 53: "Java 9", |
| 36 | 54: "Java 10", |
| 37 | 55: "Java 11", |
| 38 | 56: "Java 12", |
| 39 | 57: "Java 13", |
| 40 | 58: "Java 14", |
| 41 | 59: "Java 15", |
| 42 | 60: "Java 16", |
| 43 | 61: "Java 17", |
| 44 | 62: "Java 18", |
| 45 | 63: "Java 19", |
| 46 | 64: "Java 20", |
| 47 | } |
| 48 | |
| 49 | if a in versionMapping: |
| 50 | cls.msg += f"根据错误报告,推荐使用 {versionMapping[a]}。\n" |
| 51 | |
| 52 | elif "Unsupported Java detected" in errMsg: |
| 53 | cls.msg += "该服务器正在使用的 Java 与服务器不兼容。\n" |
| 54 | cls.msg += f"请使用 {errMsg[errMsg.index('Only up to ') + 11 : errMsg.index('Only up to ') + 18]}\n" # noqa: E501 |
| 55 | |
| 56 | elif "requires running the server with" in errMsg: |
| 57 | cls.msg += "该服务器正在使用的 Java 与服务器不匹配。\n" |
| 58 | cls.msg += ( |
| 59 | f"请使用 {errMsg[errMsg.index('Java') + 4 : errMsg.index('Java') + 11]}!\n" |
| 60 | ) |
| 61 | |
| 62 | elif "OutOfMemoryError" in errMsg: |
| 63 | cls.msg += "服务器内存溢出。请检查服务器内存设置,不要超出可用内存,也不要太小。\n" |
| 64 | |
| 65 | elif "Invalid maximum heap size" in errMsg: |
| 66 | cls.msg += "服务器最大内存分配有误:\n" + errMsg + "\n" |
| 67 | |
| 68 | elif "Unrecognized VM option" in errMsg: |
| 69 | cls.msg += ( |
| 70 | "服务器 JVM 参数有误,请前往服务器管理页修改或删除以下参数: \n" |
| 71 | + errMsg[errMsg.index("'") + 1 : errMsg.rindex(" '")] |
| 72 | + "\n" |
| 73 | ) |
| 74 | |
| 75 | elif ( |