从命令行调试 java jar 文件?
debug java jar file from command line?
我无法使用 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" 是正确的 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。
如果改为 run MainRunner
我输入 run com.XXXXX.sdt.framework.runner.MainRunner
,然后我得到错误:
VM 已启动:错误:无法找到或加载主 class com.XXXXX.sdt.framework.runner.MainRunner
如果我启动 JVM,然后附加到它:
java -Xdebug -X运行jdwp:transport=dt_socket,server=y,suspend=y,address=1044 -jar runJar.jar
和
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 文件中的。
我无法使用 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" 是正确的 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。
如果改为
run MainRunner
我输入run com.XXXXX.sdt.framework.runner.MainRunner
,然后我得到错误:VM 已启动:错误:无法找到或加载主 class com.XXXXX.sdt.framework.runner.MainRunner
如果我启动 JVM,然后附加到它:
java -Xdebug -X运行jdwp:transport=dt_socket,server=y,suspend=y,address=1044 -jar runJar.jar
和
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 文件中的。