回答:
main()
メソッドを右クリックして選択し"Debug As... Java Application"
ませんか?
Spring Boot Referenceのセクション19.2には、リモートデバッグサポートを有効にしてアプリケーションを起動する方法が記載されています。
$ java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n \
-jar target/myproject-0.0.1-SNAPSHOT.jar
アプリケーションを開始したら、そのリモートJavaアプリケーション構成を[実行/デバッグ]構成に追加し、アプリの開始時に定義したポート/アドレスを選択するだけで、自由にデバッグできます。
java -agentlib:jdwp=help
では、「古い-Xrunjdwpインターフェースは引き続き使用できますが、将来のリリースで削除される」という状態で実行されることに注意してください。代わりに使用する-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n
より簡単なソリューション:
入力する代わりにmvn spring-boot:run
、単に入力mvnDebug spring-boot:run
関連するポートで「リモートJavaアプリケーション」の新しいデバッグ構成を作成することにより、Eclipseでデバッガをアタッチする必要があります。
これを機能させるためにリモートデバッグをセットアップする必要はありませんでした。Mavenを使用しました。
spring-boot::run
。NB。行ごとのデバッグを行うときにIDEでプロジェクトのソースコードを見つけるのに問題がある場合は、このSO回答を見て、ソースコードをデバッグアプリケーションに手動で接続する方法を見つけてください。
これが誰かを助けることを願っています!
Spring Bootアプリケーションをサービスとして設定するSpring Bootのガイドに従っていると仮定します。アプリケーションアーティファクトはにあり/srv/my-app/my-app.war
、設定ファイルが付属しています/srv/my-app/my-app.conf
。
# This is file my-app.conf
# What can you do in this .conf file? The my-app.war is prepended with a SysV init.d script
# (yes, take a look into the war file with a text editor). As my-app.war is symlinked in the init.d directory, that init.d script
# gets executed. One of its step is actually `source`ing this .conf file. Therefore we can do anything in this .conf file that
# we can also do in a regular shell script.
JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,address=localhost:8002,server=y,suspend=n"
export SPRING_PROFILES_ACTIVE=staging
Spring Bootアプリケーションをsudo service my-app restart
で再起動すると、ログファイルのに/var/log/my-app.log
ある行にとあるはずListening for transport dt_socket at address: 8002
です。
サーバーへのSSHポート転送トンネルを開きますssh -L 8002:localhost:8002 myusername@staging.example.com
。このSSHセッションを実行し続けます。
Eclipseで、ツールバーから[ 実行] -> [ デバッグ構成] -> [ リモートJavaアプリケーション ]を選択-> [ 新規 ]ボタンをクリック-> [接続タイプ標準(ソケット接続) ]、[ ホストローカルホスト]、[ ポート8002](または、前の手順で構成されました)。[ 適用]、[ デバッグ]の順にクリックします。
これで、Eclipseデバッガーがリモートサーバーに接続されます。デバッグパースペクティブに切り替えると、接続されているJVMとそのスレッドが表示されます。ブレークポイントは、リモートでトリガーされるとすぐに起動する必要があります。
以下のコマンドを実行しますpom.xml
:
mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"
ポートのデバッグオプションを使用してリモートJavaアプリケーションを起動します5005
Spring Boot 2.0.3.RELEASE
。
私の意見では、最良の解決策はpom.xmlにプラグインを追加することであり、常に他に何もする必要はありません。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9898
</jvmArguments>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
mvn clean install
がデバッガーをトリガーし、ビルドがハングします。mvnDebug clean install
コマンドだけがそうするなら、それはクールです。
リモートデバッグを有効にするには、http://java.dzone.com/articles/how-debug-remote-java-applicatを参照してください。tomcatを使用してアプリケーションを実行している場合は、リモートデバッグパラメーターを使用してtomcatを開始するか、次のコマンドを使用してJPDAサポートを使用してtomcatを開始できます。
ウィンドウズ
<tomcat bin dir>/startup.bat jpda
* nix
<tomcat bin dir>/startup.sh jpda
これにより、ポート8000でリモートデバッグが有効になります
この質問はすでに回答されていますが、Springboot + gradle + jHipsterをデバッグするために同じ問題が発生しました、
ほとんどの場合、Springブートアプリケーションは右クリックでデバッグできますが、gradleを使用する場合、追加の環境パラメーターを設定すると、直接デバッグすることはできません。
これを解決するために、EclipseはリモートJavaアプリケーションとして1つの追加機能を提供しました
この機能を使用すると、アプリケーションをデバッグできます。
以下の手順に従ってください:
./gradlew bootRun --debug-jvm
コマンドでgradleアプリケーションを実行する
Eclipse->プロジェクトを右クリックして、Debug configuration-> Remote Java Applicationに移動します。
ホストとポートをlocalhostとして追加し、ポートを5005として追加します(gradleデバッグのデフォルト、変更できます)
詳細と手順については、参照してください。
Spring Bootアプリケーションのメインクラスファイルを右クリック-> [ デバッグオプション]を選択-> [ Javaアプリケーションを選択]