调试.jar文件包含main方法的Java项目

时间:2010-11-24 19:35:34

标签: java eclipse debugging jdb

对于game trees上的课堂练习,我必须编写适用于 .jar 文件的代码。我之前没有以这种方式使用过Java。我的Eclipse项目树看起来像这样:

Project tree

要运行代码,我被告知要在命令行上执行此操作:

  

java -jar VierOpEenRij.jar男士spel.speler.Random 5 5

如何调试此代码?我尝试过修改Eclipse的调试配置,我也尝试执行jdb -jar VierOpEenRij.jar Mens spel.speler.Random 5 5但我无法找到启动调试器的方法。

.jar 文件包含main方法时,如何调试代码?

3 个答案:

答案 0 :(得分:2)

我不确定是否使用jdb进行调试,但如果您在Eclipse中进行调试,那么最终的包装(例如jar)是什么并不重要。如果您为Random(使用main方法的类?)类设置调试,那么您将调试您的程序就好了。

答案 1 :(得分:1)

我可能完全不在,因为我并没有真正处于这种情况,但不会右键点击jar - >调试为... - > Java应用程序可以解决这个问题吗?

编辑:

管理以使其以这种方式工作:

  • 需要一个“半”可运行的jar(似乎是你的情况:那里的主类但缺少依赖,而清单应该表明一个主类)
  • 将main添加到buidl路径(在包浏览器视图中,右键单击jar - > build-path - >添加到构建路径)。
  • 在包资源管理器视图的构建路径节点中,展开jar,直到深入到主方法,右键单击并运行或调试为java应用程序。

由于某种原因,我希望能够右键单击jar并直接将dbug作为java应用程序执行...虽然清单中显示了main,但它似乎没有找到它。不知道为什么。但与此同时,这也有效。

EDIT2:实际上,现在我可以直接右键单击jar(甚至是项目)并在弹出对话框时选择正确的main,这一切都很好。也许我早点错过了什么。无论如何,你很高兴。)

在下图中,MainInJar.main()调用ClassOutOfJar.somethingOutOfJar(),它会在屏幕上输出内容。

Main in Jar

答案 2 :(得分:0)

您需要在jdb中指定classpath。

  

jdb -classpath [jar-file] [main-class-full-name] [args]

在您的情况下,jar文件将是:VierOpEenRij.jar

您可以在META-INF / MANIFEST.MF中的jar存档中找到的主类名称。