我在项目中遇到注释/持久性错误,并且持久性库抛出一个
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编译,通过以下方式使用debug模式:
<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 格式输入的三个值中的任意一个 需要强调的是,debug和debuglevel是maven中包含的重要节点。
希望它能在某种程度上有所帮助。
参考:maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html
您可以在 NetBeans 中调试任何 Maven 目标,转到
/Project Properties/Actions/
,选择要调试的目标,在最后一个选项 Set Properties 中选择 Add,然后选择 Debug Maven build。
您需要设置
jpda.listen=maven
属性。
在 Netbeans 8+ 中:
1. 构建时选择要调试的模块。
2. 右键单击打开上下文菜单,然后选择
Properties
。
3. 选择
Actions
类别。
4. 然后选择
Clean and build project
操作。
5. 在
Set Properties
部分下,选择 Add
> Debug Maven Build
。
6. 单击
OK
按钮关闭并保存您的设置。
现在您应该能够设置断点并调试 Maven 插件和依赖项。
您是否在调试模式下运行 Maven?
要在调试模式下运行 Maven,请使用命令 mvnDebug 而不是 mvn 来构建项目,然后使用 IDE 附加到该项目。 应命调试断点。
我已经使用 Eclipse 完成了此操作,主要是在尝试调试我自己的注释处理器时,但它对于调试 Maven 插件也很方便。
我想调试 JPA 处理器并不是一件小事 - 您最好再次查看整个错误消息或将其发布在您的问题中。
您需要在
org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor
类中设置断点,并且应该在服务器启动期间停止(您需要在调试模式下启动)。这并不是真正的编译,而只是 JPA 从类注释加载其元数据。因为您的 JPA 提供程序的代码不是您可以轻松理解或修改的代码,所以我建议您不要尝试在网上搜索您的特定错误并查看其他人是否遇到过它(即可能是 Eclipse Link 上的错误),而不是调试,当您的实体未正确注释时,这些库通常会抛出无信息的异常,例如空指针。