add Crash report analysis (#2790)

* fix i18n

* add

https://github.com/HMCL-dev/HMCL/discussions/1904#discussioncomment-4339947
This commit is contained in:
zkitefly
2024-02-13 14:11:21 +08:00
committed by GitHub
parent 95afaa5112
commit c54cb88db8
4 changed files with 28 additions and 2 deletions

View File

@@ -434,7 +434,6 @@ game.crash.reason.memory_exceeded=当前游戏因为分配的内存过大,无
game.crash.reason.mac_jdk_8u261=当前游戏因为你所使用的 Forge 或 OptiFine 与 Java 冲突崩溃。\n请尝试更新 Forge 和 OptiFine或使用 Java 8u251 及更早版本启动。
game.crash.reason.mod=当前游戏因为 %1$s 的问题,无法继续运行。\n你可以更新或删除已经安装的 %1$s 再试。
game.crash.reason.mod_resolution=当前游戏因为 Mod 依赖问题无法继续运行。Fabric 提供了如下信息:\n%1$s
game.crash.reason.forgemod_resolution=当前游戏因为 Mod 依赖问题无法继续运行。Forge 提供了如下信息:\n%1$s
game.crash.reason.mod_resolution_collection=当前游戏因为前置 Mod 版本不匹配,无法继续运行。\n%1$s 需要前置 Mod%2$s 才能继续运行。\n这表示你需要更新或降级前置。你可以到下载页的模组下载或到网上下载 %3$s。
game.crash.reason.mod_resolution_conflict=当前游戏因为 Mod 冲突,无法继续运行。\n%1$s 与 %2$s 不能兼容。
game.crash.reason.mod_resolution_missing=当前游戏因为缺少 Mod 前置,无法继续运行。\n%1$s 需要前置 Mod%2$s 才能继续运行。\n这表示你少安装了 Mod或该 Mod 版本不够。你可以到下载页的模组下载,或到网上下载 %3$s。

View File

@@ -114,7 +114,7 @@ public final class CrashReportAnalyzer {
MOD_RESOLUTION0(Pattern.compile("(\tMod File:|-- MOD |\tFailure message:)")),
FORGE_REPEAT_INSTALLATION(Pattern.compile("MultipleArgumentsForOptionException: Found multiple arguments for option (.*?), but you asked for only one")),//https://github.com/HMCL-dev/HMCL/issues/1880
OPTIFINE_REPEAT_INSTALLATION(Pattern.compile("ResolutionException: Module optifine reads another module named optifine")),//Optifine 重复安装及Mod文件夹有自动安装也有
JAVA_VERSION_IS_TOO_HIGH(Pattern.compile("(Unable to make protected final java\\.lang\\.Class java\\.lang\\.ClassLoader\\.defineClass|java\\.lang\\.NoSuchFieldException: ucp|Unsupported class file major version|because module java\\.base does not export|java\\.lang\\.ClassNotFoundException: jdk\\.nashorn\\.api\\.scripting\\.NashornScriptEngineFactory|java\\.lang\\.ClassNotFoundException: java\\.lang\\.invoke\\.LambdaMetafactory)")),//Java版本过高
JAVA_VERSION_IS_TOO_HIGH(Pattern.compile("(Unable to make protected final java\\.lang\\.Class java\\.lang\\.ClassLoader\\.defineClass|java\\.lang\\.NoSuchFieldException: ucp|Unsupported class file major version|because module java\\.base does not export|java\\.lang\\.ClassNotFoundException: jdk\\.nashorn\\.api\\.scripting\\.NashornScriptEngineFactory|java\\.lang\\.ClassNotFoundException: java\\.lang\\.invoke\\.LambdaMetafactory|Exception in thread \"main\" java\\.lang\\.NullPointerException: Cannot read the array length because \"urls\" is null)")),//Java版本过高
INSTALL_MIXINBOOTSTRAP(Pattern.compile("java\\.lang\\.ClassNotFoundException: org\\.spongepowered\\.asm\\.launch\\.MixinTweaker")),
//Forge 默认会把每一个 mod jar 都当做一个 JPMS 的模块Module加载。在这个 jar 没有给出 module-info 声明的情况下JPMS 会采用这样的顺序决定 module 名字:

View File

@@ -166,6 +166,13 @@ public class CrashReportAnalyzerTest {
assertEquals("52", result.getMatcher().group("expected"));
}
@Test
public void javaVersionIsTooHigh() throws IOException {
CrashReportAnalyzer.Result result = findResultByRule(
CrashReportAnalyzer.anaylze(loadLog("/logs/java_version_is_too_high.txt")),
CrashReportAnalyzer.Rule.JAVA_VERSION_IS_TOO_HIGH);
}
@Test
public void securityException() throws IOException {
CrashReportAnalyzer.Result result = findResultByRule(

View File

@@ -0,0 +1,20 @@
[authlib-injector] [INFO] Logging file: F:\.minecraft\authlib-injector.log
[authlib-injector] [INFO] Version: 1.2.1
[authlib-injector] [INFO] Authentication server: https://littleskin.cn/api/yggdrasil/
2022-12-08 13:15:41,589 main ERROR Error processing element Queue ([Appenders: null]): CLASS_NOT_FOUND
[13:15:43] [main/INFO]: ModLauncher running: args [--username, 哎呀呀呀, --version, 1.16.2, --gameDir, F:\\.minecraft, --assetsDir, F:\.minecraft\assets, --assetIndex, 1.16, --uuid, e3c2fb57f8764ecfa1564c1cc92143f2, --accessToken, ❄❄❄❄❄❄❄❄, --userType, mojang, --versionType, HMCL 3.5.3.228, --width, 854, --height, 480, --launchTarget, fmlclient, --fml.forgeVersion, 33.0.61, --fml.mcVersion, 1.16.2, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20200812.004259]
[13:15:43] [main/INFO]: ModLauncher 7.0.1+78+master.e9771d8 starting: java version 17.0.4.1 by Oracle Corporation
java.lang.NoSuchFieldException: ucp
at java.base/java.lang.Class.getDeclaredField(Class.java:2610)
at cpw.mods.gross.Java9ClassLoaderUtil.getSystemClassPathURLs(Java9ClassLoaderUtil.java:28)
at cpw.mods.modlauncher.TransformationServicesHandler.discoverServices(TransformationServicesHandler.java:139)
at cpw.mods.modlauncher.Launcher.run(Launcher.java:74)
at cpw.mods.modlauncher.Launcher.main(Launcher.java:65)
Exception in thread "main" java.lang.NullPointerException: Cannot read the array length because "urls" is null
at java.base/jdk.internal.loader.URLClassPath.<init>(URLClassPath.java:155)
at java.base/jdk.internal.loader.URLClassPath.<init>(URLClassPath.java:176)
at java.base/java.net.URLClassLoader.<init>(URLClassLoader.java:152)
at cpw.mods.modlauncher.TransformationServicesHandler$TransformerClassLoader.<init>(TransformationServicesHandler.java:159)
at cpw.mods.modlauncher.TransformationServicesHandler.discoverServices(TransformationServicesHandler.java:139)
at cpw.mods.modlauncher.Launcher.run(Launcher.java:74)
at cpw.mods.modlauncher.Launcher.main(Launcher.java:65)