从命令行调试java jar文件?

时间:2018-02-20 15:02:03

标签: java command-line cucumber-java

我无法使用jdb进行命令行调试以处理Cucumber / Java jar文件。例如,我查看this SO question,到目前为止没有任何工作。

  • 当我从IntelliJ运行黄瓜功能文件时,它运行正常。
  • 我根据当地的指示编制了程序,并成功完成。
  • 当我使用java -jar runJar.jar运行已编译的jar文件时,一切正常。
  • 当我运行jdb runJar.jar时,我收到了jdb提示符:

    初始化jdb ...

      

但是当我尝试运行Main-Class时,它失败了:

> run MainRunner
run  MainRunner
Set uncaught java.lang.Throwable
Set deferred uncaught java.lang.Throwable
>
VM Started: Error: Could not find or load main class MainRunner

The application exited

我知道" MainRunner"是正确的课程,因为它是"主要课程的名称:"在IntelliJ中,也因为我使用此命令解压缩了jar文件:

unzip -c MyJar.jar META-INF/MANIFEST.MF | grep 'Main-Class

并报告Main-Class: com.XXXXX.sdt.framework.runner.MainRunner为主要类。

  • 如果改为run MainRunner我输入run com.XXXXX.sdt.framework.runner.MainRunner,那么我收到错误:

    VM已启动:错误:无法找到或加载主类com.XXXXX.sdt.framework.runner.MainRunner

  • 如果我启动JVM然后使用以下命令附加到它:

    java -Xdebug -Xrunjdwp:transport = dt_socket,server = y,suspend = y,address = 1044 -jar runJar.jar

jdb -attach 1044

并在主1提示符后恢复,我收到错误

Exception occurred: java.lang.StringIndexOutOfBoundsException (uncaught)"thread=main", java.lang.String.charAt(), line=658 bci=21

jdb上的Java文档暗示这应该可行,所以我不确定从何处开始。

1 个答案:

答案 0 :(得分:1)

您是否注意到您正在runJar.jar开始运行,但检查了MyJar.jar中的主要班级?

如果您使用JAR文件作为应用程序打包,则需要该jar文件中的Main-Class,而不是路径中的一个jar文件。

相关问题