run jar in debug mode from terminal

Pawel picture Pawel · Oct 23, 2018 · Viewed 29.6k times · Source

I'm using intellij idea IDE and I'm trying to run my jar file from terminal in debug mode and set breakpoints in a few places in the code.

the command I'm using is: java -jar myTestApp.jar -file "myfile.txt" -users myUser -Xdebug -Xrunjdwp:transport=dt_socket,server=127.0.0.1,suspend=n,address=8080

The problem is that I'm also using commons-cli library, so -Xdebug and -Xrunjdwp parameters are not recognized as Options, and I'm getting:enter image description here Any idea how to fix that?

Answer

SWiggels picture SWiggels · Jan 3, 2019

Please assume the writer of the question is not using Java 5 in 2018:

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

Btw: in case you use Java 9 and later: change address=8080 to address=*:8080 since localhost is no more the default.

stop telling people to use -Xdebug and -Xrunjdwp

Xdebug was used in Java 5 and below. Since Java 6 there is the -agentlib available. Xdebug allows access to the debugger over Xrunjdwp. 
JIT now starts in a compatibility-mode if you use Xdebug and uses a legacy-debugger which slows down your debugging extremely. 
People tell then to use -Djava.compiler=NONE to disable the compatibility-mode or to add -Xnoagent to disable the legacy debugger. Don't do that use -agentlib!