从终端在调试模式下运行 jar

2022-09-04 05:20:22

我正在使用intellij idea IDE,我正在尝试在调试模式下从终端运行我的jar文件,并在代码中的几个位置设置断点。

我正在使用的命令是:java -jar myTestApp.jar -file "myfile.txt" -users myUser -Xdebug -Xrunjdwp:transport=dt_socket,server=127.0.0.1,suspend=n,address=8080

问题是我也在使用commons-cli库,所以-Xdebug和-Xrunjdwp参数没有被识别为Options,我得到了:enter image description here任何想法如何解决这个问题?


答案 1

请假设问题的作者在2018年没有使用Java 5:

java -agentlib:jdwp=transport=dt_socket,address=8080,server=y,suspend=n -jar myTestApp.jar -file "myfile.txt -users myUser

顺便说一句:如果您使用Java 9及更高版本:更改为,因为localhost不再是默认值。address=8080address=*:8080

停止告诉人们使用 -Xdebug-Xrunjdwp

Xdebug用于Java 5及更低版本。从Java 6开始,就有了。 允许通过 访问调试器。现在,如果您使用并使用旧调试器,则 JIT 将以兼容模式启动,这会极大地减慢调试速度。然后,人们告诉使用来禁用兼容模式或添加以禁用旧调试器。不要这样做!-agentlibXdebugXrunjdwpXdebug-Djava.compiler=NONE-Xnoagent-agentlib


答案 2

Java 在指定要运行的类或 jar 后,只期望程序参数。因此,只需尝试将JVM选项放在该选项之前:

java -Xdebug -Xrunjdwp:transport=dt_socket,server=127.0.0.1,suspend=n,address=8080 -jar myTestApp.jar -file "myfile.txt" -users myUser 

推荐