プロジェクトでアノテーション/永続性エラーに直面していて、永続性ライブラリが
NullPointerException when trying to resolve the entities (org.Eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor.discoverMappedSuperclassesAndInheritanceParents(EntityAccessor.Java:224)).
このようなエラーをデバッグして、エラーの原因について詳しく知るにはどうすればよいですか?
EntityAccessor
にブレークポイントを設定し、デバッグ用にコンパイルしても機能しないため、コンパイラ自体がデバッグモードで実行されていないようです。
Netbeans/Java/Mavenを使用しています。
私の理解では、デバッグモードではMavenではなく、コンパイルでデバッグする必要があります。
Mvnを使用してコンパイルするには、次の方法でデバッグモードを使用します。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>8</source>
<target>8</target>
<debug>true</debug>
<debuglevel>lines,vars,source</debuglevel>
</configuration>
</plugin>
debuglevelは、CSV形式で入力された3つの値のいずれかです。強調表示するには、 デバッグ そして debuglevel Mavenに含まれる重要なノードです。
それが何らかの形で役立つことを願っています。
参照: maven.Apache.org/plugins/maven-compiler-plugin/compile-mojo.html
NetBeansで/Project Properties/Actions/
に移動するMavenゴールをデバッグし、デバッグするゴールを選択します。最後のオプションでプロパティの設定選択追加、次に選択します。 Debug Mavenビルド。
jpda.listen=maven
プロパティを設定する必要があります。
Netbeans 8以降:
1。ビルド時にデバッグするモジュールを選択します。
2。右クリックしてコンテキストメニューを開き、Properties
を選択します。
。Actions
カテゴリを選択します。
4。次に、Clean and build project
アクションを選択します。
5。Set Properties
セクションで、Add
> Debug Maven Build
を選択します。
6。OK
ボタンをクリックして、設定を閉じて保存します。
これで、ブレークポイントを設定し、Mavenプラグインと依存関係をデバッグできるようになります。
Mavenをデバッグモードで実行していますか?
Mavenをデバッグモードで実行するには、コマンドmvnの代わりにmvndebugを使用してプロジェクトをビルドし、IDEを使用してプロジェクトにアタッチします。デバッグブレークポイントに到達する必要があります。
私はこれをEclipseで行いましたが、主に自分のアノテーションプロセッサをデバッグしようとするときに使用しましたが、Mavenプラグインのデバッグにも便利です。
JPAプロセッサのデバッグは簡単ではないと思います。エラーメッセージ全体をもう一度確認するか、質問に投稿することをお勧めします。
ブレークポイントをorg.Eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor
クラスに設定する必要があります。これは、サーバーの起動中に停止する必要があります(デバッグモードで起動する必要があります)。これは実際にはコンパイルではなく、JPAがクラスアノテーションからメタデータをロードするだけです。 JPAプロバイダーのコードは簡単に理解したり変更したりできるものではないため、デバッグする代わりに、ネットで特定のエラーを検索して、他の誰かがそれを経験していないかどうかを確認することをお勧めします(つまり、Eclipse Linkのバグである可能性があります) 、エンティティに正しく注釈が付けられていない場合、これらのライブラリがNullポインタなどの情報のない例外をスローするのはよくあることです。