4

当我在eclipse中调试游戏时,游戏运行良好。但是,当我用它制作可运行的 jar 时,当敌人被击中时游戏会崩溃,除了那部分之外,游戏的其余部分都可以正常工作。我该怎么做,如何调试可运行的 jar?

4

3 回答 3

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 catch 一直放在围绕主循环的堆栈顶部。

如果您相当确定该错误已解决,我不建议您将 try/catch 保留在您的发布代码中。与 try/catch 相关的性能问题会降低您的游戏速度,如果您将它们放在经常访问的函数周围。

于 2013-04-16T16:14:07.553 回答
1

创建一个新项目并将可运行的 jar 添加到外部 jar 中,然后使用运行配置,您可以选择它的主要方法并从那里调试

您还可以将jar的源文件夹设置为另一个项目的源文件夹(请记住,热代码替换不再起作用)

于 2013-04-16T20:37:09.413 回答
0

当我遇到与您类似的问题时,发现它是由于调试器花费了一些额外的时间(尤其是断点),然后是编译的程序。

当我尝试异步加载纹理时发生此问题,它可以在调试器中正常工作但在编译时崩溃,我会查看任何线程(如果有的话)或任何其他更长时间运行的项目

于 2013-04-16T22:00:28.317 回答