从命令行调试 java jar 文件?

debug java jar file from command line?

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

但是当我尝试 运行 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" 是正确的 class 因为这是 IntelliJ 中 "Main class:" 的名称,也因为我使用此命令解压缩了 jar 文件:

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

并且它报告 Main-Class: com.XXXXX.sdt.framework.runner.MainRunner 作为 Main-Class。

jdb -attach 1044

并在 main1 提示后恢复,我收到错误

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

jdb 上的 Java 文档暗示这应该可以正常工作,所以我不确定从这里到哪里去。

您是否注意到您是 运行 runJar.jar 但在 MyJar.jar 中检查了 Main class?

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