我正面临项目中的注释/持久性错误,而持久性库会抛出
NullPointerException when trying to resolve the entities (org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor.discoverMappedSuperclassesAndInheritanceParents(EntityAccessor.java:224)).
如何调试这些错误以找到有关错误原因的更多信息?
在EntityAccessor
中设置断点并编译以进行调试不起作用,编译器本身似乎没有在调试模式下运行。
我正在使用Netbeans / Java / Maven。
答案 0 :(得分:29)
根据我的理解,您希望在编译中进行调试 - 而不是在调试模式下进行调试。
使用mvn编译,通过以下方式使用调试模式:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.6</source>
<target>1.6</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
答案 1 :(得分:5)
您可以在NetBeans中调试任何Maven目标/Project Properties/Actions/
,选择您要调试的目标,在最后一个选项中设置属性选择添加,然后选择 Debug Maven build 。
答案 2 :(得分:3)
你是否在调试模式下运行Maven?
要在调试模式下运行Maven,请使用命令 mvndebug 而不是 mvn 来构建项目,然后使用IDE将其附加到该项目。应该点击调试断点。
我已经使用Eclipse完成了这项工作,主要是在尝试调试我自己的注释处理器时,但它对于调试Maven插件也很方便。
我认为调试JPA处理器并不是一件容易的事情 - 你可能最好再次查看整个错误消息或将其发布在你的问题中。
答案 3 :(得分:2)
您需要设置jpda.listen=maven
属性。
在Netbeans 8+中:
1。选择要在构建时调试的模块。
2。右键单击以打开上下文菜单,然后选择Properties
。
3。选择Actions
类别。
4. 然后选择Clean and build project
操作。
5. 在Set Properties
部分下,选择Add
&gt; Debug Maven Build
。
6。点击OK
按钮关闭并保存设置。
现在您应该能够设置断点并调试maven插件和依赖项。
答案 4 :(得分:0)
您需要在org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor
类中设置断点,这应该在服务器启动期间停止(您需要在调试模式下启动)。这不是真正的编译,只是JPA从类注释加载其元数据。因为您的JPA提供程序的代码不是您可以轻松理解或修改的代码,我建议您不要在调试中尝试在网上搜索您的特定错误,看看是否有其他人经历过它(即可能是Eclipse Link上的错误)当你的实体没有正确注释时,这些库通常会抛出像Null Pointer这样的无法提供的异常。