私は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パラメータがオプションとして認識されず、次のようになっていることです。 それを修正する方法はありますか?
質問の作成者が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
に変更します。
-Xdebug
と-Xrunjdwp
を使用するように人々に指示するのをやめます
Xdebug はJava 5以下で使用されました。Java 6なので、-agentlib
が使用可能です。Xdebug
は、Xrunjdwp
を介してデバッガーへのアクセスを許可します。Xdebug
を使用すると、JITは互換モードで起動し、レガシーデバッガーを使用するため、デバッグが非常に遅くなります。 -Djava.compiler=NONE
を使用して互換モードを無効にするか、-Xnoagent
を追加してレガシーデバッガーを無効にします。-agentlib
を使用しないでください。
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
-Xdebugは、-jarパラメーターの前に移動する必要があります。 Javaは、それがプログラムの引数の一部であると考えています。
これは私のために働いた
Java -jar -Xdebug -agentlib:jdwp="transport=dt_socket,server=y,suspend=n,address=5000" core-service-1.0-SNAPSHOT.jar