web-dev-qa-db-ja.com

ターミナルからデバッグモードでjarを実行します

私はintellijidea 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パラメータがオプションとして認識されず、次のようになっていることです。 enter image description here それを修正する方法はありますか?

2
Pawel

質問の作成者が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=8080address=*:8080に変更します。

-Xdebug-Xrunjdwpを使用するように人々に指示するのをやめます

Xdebug はJava 5以下で使用されました。Java 6なので、-agentlibが使用可能です。Xdebugは、Xrunjdwpを介してデバッガーへのアクセスを許可します。Xdebugを使用すると、JITは互換モードで起動し、レガシーデバッガーを使用するため、デバッグが非常に遅くなります。 -Djava.compiler=NONEを使用して互換モードを無効にするか、-Xnoagentを追加してレガシーデバッガーを無効にします。-agentlibを使用しないでください。

2
SWiggels

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
Damarus

-Xdebugは、-jarパラメーターの前に移動する必要があります。 Javaは、それがプログラムの引数の一部であると考えています。

0
SurfMan

これは私のために働いた

Java -jar -Xdebug  -agentlib:jdwp="transport=dt_socket,server=y,suspend=n,address=5000" core-service-1.0-SNAPSHOT.jar
0
Tabish Ahmed