我正在使用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参数未被识别为选项,并且得到: 知道如何解决这个问题吗?
答案 0 :(得分:4)
请假设问题的作者在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 and later,则将address=8080
更改为address=*:8080
,因为localhost不再是默认值。
停止告诉人们使用-Xdebug
和-Xrunjdwp
Xdebug在Java 5及更低版本中使用。从Java 6开始,-agentlib
可用。
Xdebug
允许通过Xrunjdwp
访问调试器。现在,如果您使用Xdebug
,则JIT将以兼容模式启动,并使用传统调试器,这会极大降低调试速度。人们然后告诉使用-Djava.compiler=NONE
禁用兼容性模式或添加-Xnoagent
禁用旧式调试器。请勿使用-agentlib
!
答案 1 :(得分: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
答案 2 :(得分:1)
这对我有用
java -jar -Xdebug -agentlib:jdwp="transport=dt_socket,server=y,suspend=n,address=5000" core-service-1.0-SNAPSHOT.jar
答案 3 :(得分:0)
-Xdebug应该移至-jar参数的前面。现在,Java认为它是程序参数的一部分。