update crash suggestions.

This commit is contained in:
huanghongxun
2015-07-03 12:50:11 +08:00
parent 07b8c5777a
commit cdb78a31e9
7 changed files with 43 additions and 32 deletions

View File

@@ -124,15 +124,13 @@ public final class Launcher {
minecraftMain.invoke(null, new Object[]{cmds});
} catch (Throwable throwable) {
HMCLog.err("Cought exception!");
final StringWriter trace = new StringWriter();
PrintWriter writer = new PrintWriter(trace);
throwable.printStackTrace(writer);
final String advice = MinecraftCrashAdvicer.getAdvice(throwable);
String trace = StrUtils.getStackTrace(throwable);
final String advice = MinecraftCrashAdvicer.getAdvice(trace);
MessageBox.Show(C.i18n("crash.minecraft") + ": " + advice);
LogWindow.instance.log(C.i18n("crash.minecraft"));
LogWindow.instance.log(advice);
LogWindow.instance.log(trace.toString());
LogWindow.instance.log(trace);
LogWindow.instance.setExit(TrueFunction.instance);
LogWindow.instance.setVisible(true);
}

View File

@@ -16,7 +16,6 @@
*/
package org.jackhuang.hellominecraft.launcher.launch;
import java.util.ConcurrentModificationException;
import org.jackhuang.hellominecraft.C;
/**
@@ -26,32 +25,42 @@ import org.jackhuang.hellominecraft.C;
*/
public final class MinecraftCrashAdvicer {
public static String getAdvice(Throwable t) {
return getAdvice(t, false);
public static String getAdvice(String trace) {
return getAdvice(trace, false);
}
public static String getAdvice(Throwable t, boolean selfCrash) {
if (t.getCause() instanceof UnsupportedClassVersionError) {
public static String getAdvice(String trace, boolean selfCrash) {
/*if (t.getCause() instanceof UnsupportedClassVersionError) {
return C.i18n("crash.advice.UnsupportedClassVersionError");
} else if (t instanceof ConcurrentModificationException) {
return C.i18n("crash.advice.ConcurrentModificationException");
} else if (t instanceof SecurityException) {
return C.i18n("crash.advice.SecurityException");
} else if (t instanceof InvocationTargetException) {
return C.i18n("crash.advice.InvocationTargetException");
} else if (t instanceof NoSuchFieldError || (t.getCause() != null && t.getCause() instanceof NoSuchFieldException)) {
return C.i18n("crash.advice.NoSuchFieldError");
} else if (t instanceof NoClassDefFoundError || (t.getCause() != null && t.getCause() instanceof ClassNotFoundException)) {
} else if (t instanceof NoClassDefFoundError || t instanceof ClassNotFoundException || (t.getCause() != null && t.getCause() instanceof ClassNotFoundException)) {
return C.i18n("crash.advice.ClassNotFondException");
}
if (t.getMessage() != null) {
if (t.getMessage().contains("OpenGL") || t.getMessage().contains("OpenAL")) {
return C.i18n("crash.advice.OpenGL");
}
}
if (t.getCause() != null && t.getCause().getMessage() != null) {
if (t.getCause().getMessage().contains("no lwjgl in java.library.path")) {
return C.i18n("crash.advice.no_lwjgl");
}
}*/
if (trace.contains("LWJGLException")) {
if(trace.contains("Pixel format not accelerated"))
return C.i18n("crash.advice.LWJGLException");
} else if (trace.contains("UnsupportedClassVersionError")) {
return C.i18n("crash.advice.UnsupportedClassVersionError");
} else if (trace.contains("ConcurrentModificationException")) {
return C.i18n("crash.advice.ConcurrentModificationException");
} else if (trace.contains("SecurityException")) {
return C.i18n("crash.advice.SecurityException");
} else if (trace.contains("NoSuchFieldException") || trace.contains("NoSuchFieldError")) {
return C.i18n("crash.advice.NoSuchFieldError");
} else if (trace.contains("NoClassDefFoundError") || trace.contains("ClassNotFoundException")) {
return C.i18n("crash.advice.ClassNotFondException");
} else if (trace.contains("no lwjgl in java.library.path")) {
return C.i18n("crash.advice.no_lwjgl");
} else if (trace.contains("OpenGL") || trace.contains("OpenAL")) {
return C.i18n("crash.advice.OpenGL");
}
return selfCrash ? C.i18n("crash.advice.no") : C.i18n("crash.advice.otherwise");
}

View File

@@ -47,7 +47,7 @@ public class CrashReport implements Thread.UncaughtExceptionHandler {
text += " Time: " + DateFormat.getDateInstance().format(new Date()) + "\n";
text += " Thread: " + t.toString() + "\n";
text += "\n Advice: \n ";
text += MinecraftCrashAdvicer.getAdvice(e, true);
text += MinecraftCrashAdvicer.getAdvice(StrUtils.getStackTrace(e), true);
text += "\n Content: \n ";
text += StrUtils.getStackTrace(e) + "\n\n";
text += "-- System Details --\n";

View File

@@ -101,8 +101,9 @@ ui.more=\u66f4\u591a
crash.advice.UnsupportedClassVersionError=\u8fd9\u53ef\u80fd\u662f\u56e0\u4e3a\u60a8\u7684Java\u7248\u672c\u8fc7\u4e8e\u8001\u65e7\uff0c\u53ef\u4ee5\u5c1d\u8bd5\u66f4\u6362\u6700\u65b0Java\u5e76\u5728\u7248\u672c\u8bbe\u7f6e\u7684Java\u8def\u5f84\u4e2d\u8bbe\u7f6e.
crash.advice.ConcurrentModificationException=\u8fd9\u53ef\u80fd\u662f\u56e0\u4e3a\u60a8\u7684Java\u7248\u672c\u9ad8\u4e8eJava 1.8.0_11\u5bfc\u81f4\u7684,\u53ef\u4ee5\u5c1d\u8bd5\u5378\u8f7dJava8\u5b89\u88c5Java7\u3002
crash.advice.ClassNotFoundException=Minecraft\u4e0d\u5b8c\u6574\u6216Mod\u51b2\u7a81\u3002\u53ef\u4ee5\u4e0b\u8f7d\u6574\u5408\u5305\u89e3\u51b3\u95ee\u9898\u3002
crash.advice.NoSuchFieldError=Minecraft\u4e0d\u5b8c\u6574\u6216Mod\u51b2\u7a81\u3002\u53ef\u4ee5\u901a\u8fc7\u4e0b\u8f7d\u6574\u5408\u5305\u89e3\u51b3\u95ee\u9898\u3002
crash.advice.ClassNotFoundException=Minecraft\u4e0d\u5b8c\u6574\u6216Mod\u51b2\u7a81\uff0c\u8bf7\u91cd\u8bd5\u6216\u4e0b\u8f7d\u6574\u5408\u5305\u89e3\u51b3\u95ee\u9898\u3002
crash.advice.NoSuchFieldError=Minecraft\u4e0d\u5b8c\u6574\u6216Mod\u51b2\u7a81\uff0c\u8bf7\u91cd\u8bd5\u6216\u4e0b\u8f7d\u6574\u5408\u5305\u89e3\u51b3\u95ee\u9898\u3002
crash.advice.LWJGLException=\u60a8\u7684\u7535\u8111\u4e0d\u6b63\u5e38\uff0c\u53ef\u80fd\u9700\u8981\u4f7f\u7528\u9a71\u52a8\u7cbe\u7075\u6216\u5176\u4ed6\u5b89\u88c5\u5668\u66f4\u65b0\u663e\u5361\u9a71\u52a8\u3002
crash.advice.SecurityException=\u53ef\u80fd\u662f\u60a8\u4fee\u6539\u4e86minecraft.jar\u4f46\u672a\u5220\u9664META-INF\u6587\u4ef6\u5939\u7684\u539f\u56e0\u3002\u8bf7\u901a\u8fc7\u538b\u7f29\u8f6f\u4ef6\u5220\u9664jar\u4e2d\u7684META-INF\u6587\u4ef6\u5939\u3002
crash.advice.otherwise=\u53ef\u80fd\u662fMod\u6216\u5176\u4ed6\u95ee\u9898\u3002

View File

@@ -96,9 +96,10 @@ ui.more=More
crash.advice.UnsupportedClassVersionError=Maybe your java is too old, try to update the java.
crash.advice.ConcurrentModificationException=Maybe your Java is newer than 1.8.0_11, you could downgrade to Java 7.
crash.advice.ClassNotFoundException=Minecraft or mods are incomplete. Update your game and mods!
crash.advice.NoSuchFieldError=Minecraft or mods are incomplete. Update your game and mods!
crash.advice.SecurityException=Maybe you have modified minecraft.jar but have not remove the META-INF.\u8bf7\u901a\u8fc7\u538b\u7f29\u8f6f\u4ef6\u5220\u9664jar\u4e2d\u7684META-INF\u6587\u4ef6\u5939\u3002
crash.advice.ClassNotFoundException=Minecraft or mods are incomplete. Retry or update your game and mods!
crash.advice.NoSuchFieldError=Minecraft or mods are incomplete. Retry or update your game and mods!
crash.advice.LWJGLException=Maybe your video driver does not work well, please update your video driver.
crash.advice.SecurityException=Maybe you have modified minecraft.jar but have not removed the META-INF.
crash.advice.otherwise=Maybe mods caused problems.
crash.advice.OpenGL=Maybe drivers caused problems.

View File

@@ -96,8 +96,9 @@ ui.more=\u66f4\u591a
crash.advice.UnsupportedClassVersionError=\u8fd9\u53ef\u80fd\u662f\u56e0\u4e3a\u60a8\u7684Java\u7248\u672c\u8fc7\u4e8e\u8001\u65e7\uff0c\u53ef\u4ee5\u5c1d\u8bd5\u66f4\u6362\u6700\u65b0Java\u5e76\u5728\u7248\u672c\u8bbe\u7f6e\u7684Java\u8def\u5f84\u4e2d\u8bbe\u7f6e.
crash.advice.ConcurrentModificationException=\u8fd9\u53ef\u80fd\u662f\u56e0\u4e3a\u60a8\u7684Java\u7248\u672c\u9ad8\u4e8eJava 1.8.0_11\u5bfc\u81f4\u7684,\u53ef\u4ee5\u5c1d\u8bd5\u5378\u8f7dJava8\u5b89\u88c5Java7\u3002
crash.advice.ClassNotFoundException=Minecraft\u4e0d\u5b8c\u6574\u6216Mod\u51b2\u7a81\u3002\u53ef\u4ee5\u4e0b\u8f7d\u6574\u5408\u5305\u89e3\u51b3\u95ee\u9898\u3002
crash.advice.NoSuchFieldError=Minecraft\u4e0d\u5b8c\u6574\u6216Mod\u51b2\u7a81\u3002\u53ef\u4ee5\u901a\u8fc7\u4e0b\u8f7d\u6574\u5408\u5305\u89e3\u51b3\u95ee\u9898\u3002
crash.advice.ClassNotFoundException=Minecraft\u4e0d\u5b8c\u6574\u6216Mod\u51b2\u7a81\uff0c\u8bf7\u91cd\u8bd5\u4e0b\u8f7d\u6574\u5408\u5305\u89e3\u51b3\u95ee\u9898\u3002
crash.advice.NoSuchFieldError=Minecraft\u4e0d\u5b8c\u6574\u6216Mod\u51b2\u7a81\uff0c\u8bf7\u91cd\u8bd5\u6216\u4e0b\u8f7d\u6574\u5408\u5305\u89e3\u51b3\u95ee\u9898\u3002
crash.advice.LWJGLException=\u60a8\u7684\u7535\u8111\u4e0d\u6b63\u5e38\uff0c\u53ef\u80fd\u9700\u8981\u4f7f\u7528\u9a71\u52a8\u7cbe\u7075\u6216\u5176\u4ed6\u5b89\u88c5\u5668\u66f4\u65b0\u663e\u5361\u9a71\u52a8\u3002
crash.advice.SecurityException=\u53ef\u80fd\u662f\u60a8\u4fee\u6539\u4e86minecraft.jar\u4f46\u672a\u5220\u9664META-INF\u6587\u4ef6\u5939\u7684\u539f\u56e0\u3002\u8bf7\u901a\u8fc7\u538b\u7f29\u8f6f\u4ef6\u5220\u9664jar\u4e2d\u7684META-INF\u6587\u4ef6\u5939\u3002
crash.advice.otherwise=\u53ef\u80fd\u662fMod\u6216\u5176\u4ed6\u95ee\u9898\u3002

View File

@@ -96,8 +96,9 @@ ui.more=\u66f4\u591a
crash.advice.UnsupportedClassVersionError=\u9019\u53ef\u80fd\u662f\u56e0\u70ba\u60a8\u7684Java\u7248\u672c\u904e\u65bc\u8001\u820a\uff0c\u53ef\u4ee5\u5617\u8a66\u66f4\u63db\u6700\u65b0Java\u4e26\u5728\u7248\u672c\u8a2d\u5b9a\u7684Java\u8def\u5f91\u4e2d\u8a2d\u5b9a.
crash.advice.ConcurrentModificationException=\u9019\u53ef\u80fd\u662f\u56e0\u70ba\u60a8\u7684Java\u7248\u672c\u9ad8\u65bcJava 1.8.0_11\u5c0e\u81f4\u7684,\u53ef\u4ee5\u5617\u8a66\u5378\u8f09Java8\u5b89\u88ddJava7\u3002
crash.advice.ClassNotFoundException=Minecraft\u4e0d\u5b8c\u6574\u6216Mod\u885d\u7a81\u3002\u53ef\u4ee5\u4e0b\u8f09\u6574\u5408\u5305\u89e3\u6c7a\u554f\u984c\u3002
crash.advice.NoSuchFieldError=Minecraft\u4e0d\u5b8c\u6574\u6216Mod\u885d\u7a81\u3002\u53ef\u4ee5\u901a\u904e\u4e0b\u8f09\u6574\u5408\u5305\u89e3\u6c7a\u554f\u984c\u3002
crash.advice.ClassNotFoundException=Minecraft\u4e0d\u5b8c\u6574\u6216Mod\u885d\u7a81\uff0c\u8bf7\u91cd\u8bd5\u4e0b\u8f09\u6574\u5408\u5305\u89e3\u6c7a\u554f\u984c\u3002
crash.advice.NoSuchFieldError=Minecraft\u4e0d\u5b8c\u6574\u6216Mod\u885d\u7a81\uff0c\u8bf7\u91cd\u8bd5\u901a\u904e\u4e0b\u8f09\u6574\u5408\u5305\u89e3\u6c7a\u554f\u984c\u3002
crash.advice.LWJGLException=\u60a8\u7684\u7535\u8111\u4e0d\u6b63\u5e38\uff0c\u53ef\u80fd\u9700\u8981\u4f7f\u7528\u9a71\u52a8\u7cbe\u7075\u6216\u5176\u4ed6\u5b89\u88c5\u5668\u66f4\u65b0\u663e\u5361\u9a71\u52a8\u3002
crash.advice.SecurityException=\u53ef\u80fd\u662f\u60a8\u4fee\u6539\u4e86minecraft.jar\u4f46\u672a\u522a\u9664META-INF\u6587\u4ef6\u593e\u7684\u539f\u56e0\u3002\u8acb\u901a\u904e\u58d3\u7e2e\u8edf\u4ef6\u522a\u9664jar\u4e2d\u7684META-INF\u6587\u4ef6\u593e\u3002
crash.advice.otherwise=\u53ef\u80fd\u662fMod\u6216\u5176\u4ed6\u554f\u984c\u3002