我无法使用 jdb 进行命令行调试来处理 Cucumber/Java jar 文件。我看了this SO question例如,到目前为止还没有任何效果。
- 当我从 IntelliJ 运行 Cucumber 功能文件时,它工作得很好。
- 我按照本地指示编译了程序,并且成功完成。
- 当我使用
java -jar runJar.jar
运行编译后的 jar 文件时,一切正常。 当我运行
jdb runJar.jar
时,我收到 jdb 提示:正在初始化 jdb ...
但是当我尝试运行主类时,它失败了:
> 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 中“Main class:”的名称,也因为我使用以下命令解压缩了 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 文档暗示这应该可以工作,所以我不知道从这里去哪里。
最佳答案
您是否注意到您正在运行 runJar.jar
,但检查了 MyJar.jar
中的 Main 类?
如果您使用 JAR 文件作为应用程序打包,则需要该 jar 文件中的Main-Class
,而不是路径上的 jar 文件之一。
关于java - 从命令行调试java jar 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48888146/