从终端以调试模式运行jar

Paw*_*wel 1 java apache-commons-cli

我正在使用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参数无法识别为选项,并且得到:在此处输入图片说明 任何想法如何解决?

SWi*_*els 6

请假设问题的作者在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及更高版本:更改address=8080为,address=*:8080因为localhost不再是默认值。

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

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

  • 由于 oracle 页面结构发生了变化,更新了“Java 9 及更高版本”链接以显示 JDK 概述。谢谢你的提示。@卢克哈奇森 (2认同)
  • 特别感谢您努力提及“停止告诉人们使用 -Xdebug 和 -Xrunjdwp” (2认同)