当我在eclipse中调试游戏时,游戏运行正常。但是,当我制造可运行的jar时,游戏会在敌人被击中时崩溃,游戏的其余部分除了那部分外都能正常工作。我该怎么办,如何调试runnable jar?
答案 0 :(得分:6)
在敌人被击中的功能周围放置一个try/catch。在catch语句中,让它打印一个堆栈跟踪和有关捕获的异常的信息。
类似的东西:
try {
enemyHit();
} catch (Exception e) {
System.out.print("RuntimeException: ");
System.out.println(e.getMessage());
e.printStackTrace();
}
从命令行运行jar,以便在jar崩溃时打印输出仍然存在。或者,将错误信息写入文件。
如果没有捕获任何内容,您可以将try / catch放在堆栈中。如果你没有在其他任何地方捕获异常,你可以把这个try一直放在你的主循环周围的堆栈顶部。
如果您确定错误已解决,我建议不要在您的发布代码中保留try / catch。如果你将游戏放在经常访问的功能中,那么与try / catch相关的性能问题会降低你的游戏速度。
答案 1 :(得分:1)
创建一个新项目并将runnable jar添加到外部jar,然后使用运行配置,您可以选择它的主要方法并从那里进行调试
你也可以将jar的源文件夹设置为另一个项目的源文件夹(只记得热代码替换不再起作用)
答案 2 :(得分:0)
当我遇到类似的问题时,你会看到调试器需要一些额外的时间(尤其是断点)然后编译程序。
这个问题发生在我试图异步加载纹理时它会在调试器中运行正常但在编译时崩溃,我会查看任何线程(如果你有的话)或任何其他更长的运行项