web-dev-qa-db-ja.com

Mavenを介してNetbeansでSpring Bootをデバッグする方法

Spring Boot 1.4.3を使用したNetbeans 8.2で適切なデバッグ設定を取得するまで、あまりにも長い時間をいじっていた後、自分の調査結果を他の人のためのQ&Aとして書き留めました。

問題は、Netbeansのデフォルト設定がSpringをデバッグモードで適切に起動できず、インターネットを検索しても、機能しないSpringドキュメントで古い情報しか見つけられないことです。

方法がわかれば、解決策は簡単です。以下の正しいセットアップ手順を見つけてください。

12
TwoThe

テスト済みで、Netbeans 8.2およびSpring-Boot 1.4.3で動作します。

まず最初に、Spring Mavenプラグインが含まれていることを確認します(これは、新しいNetbeans Springプロジェクトを作成するときにすでに含まれているはずです)。

<plugins>
  ...
  <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
      <execution>
        <goals>
          <goal>repackage</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
  ...
</plugins>

また、次のようにSpring Devtoolsを含めることをお勧めします。

<dependencies>
  ...
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
  </dependency>
  ...
</dependencies>

次に、プロジェクト設定->アクション->デバッグプロジェクトに移動し、以下を設定します。

enter image description here

目標を実行します。

spring-boot:run

プロパティを設定します。

run.jvmArguments=-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}
jpda.listen=true

通常のデバッグボタンを使用してアプリケーションを実行すると、SpringがJVMデバッガに適切に接続するはずです。

Spring Boot 2.x

Spring Boot 2.xプロジェクト(より具体的には、spring-boot-maven-pluginのバージョン2.x)のNetbeansデバッグを有効にする手順はまったく同じですが、run.jvmArgumentsプロパティ名がspring-boot.run.jvmArgumentsに変更されています。

spring-boot.run.jvmArguments=-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}
jpda.listen=true
16
TwoThe

NetBeans 8.2とSpring Boot 2.0.1をテストしたところ、 @ TwoTheの指示 に従って動作させることができませんでした。最初に、出力ウィンドウに「JPDA Listening Start ...」しか表示されないという問題が発生しました。この問題を解決するために、オプションの依存関係として Spring Devtools を追加しました。次に、デバッグが正常に実行されているように見えても、通常はアクティブなスレッドのリストを表示する「デバッグ」ウィンドウが空で、設定したブレークポイントがトリガーされませんでした。 3番目に、赤い「デバッガセッションを終了」ボタンを押してデバッグセッションを停止しようとしても、Tomcatサーバーは停止しません。

実行目標を「spring-boot:run」に変更する代わりに、デフォルトの「プロジェクトのデバッグ」アクション実行目標を使用することで十分であることがわかりました。

 process-classes org.codehaus.mojo:exec-maven-plugin:1.2.1:exec 

..およびプロパティ:

 exec.args = -Xdebug -Xrunjdwp:transport = dt_socket、server = n、address = $ {jpda.address} -classpath%classpath $ {packageClassName} 
 exec.executable = Java 
 jpda.listen = true 

(補足として、通常のデバッグJavaアプリケーションは、EclipseでSpring Bootアプリケーションをデバッグするための推奨アプローチであると思われます。 EclipseでSpring Bootアプリケーションをデバッグする方法は?)を参照してください

役立つヒントの1つは、特定のSpring Bootプロファイル(「デバッグ」など)を使用してデバッグする場合は、「-Dspring.profiles.active = debug」を「exec.args」プロパティの前に追加できることです。参照: 完全に実行可能なJARを実行し、-Dプロパティを指定するスプリングブート

4
Daniel Trebbien

enter image description here

NetBeans9でテスト済み

アクション:任意の名前を追加します。プロパティの設定:[追加]ボタンを選択し、[Mavenビルドのデバッグ]を選択して、常にデバッグします-> IDEデバッグボタン

1
Marvel Alvarez

上記の修正をすべて適用しても問題が解決しない場合は、すべてのブレークポイントを削除して、再試行してください。ウィンドウ->デバッグ->ブレークポイント->すべてのブレークポイントを削除

0
hirantha129