如何在调试模式下编译?(netbeans, java, maven)



我在一个项目中面临注释/持久性错误,持久性库抛出了

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格式中输入的三个值中的任意一个为了突出显示,debugdebuglevel是maven中包含的重要节点。

希望能有所帮助。

参考:maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html

您可以在NetBeans中调试任何Maven目标到/Project Properties/Actions/,选择您想要调试的目标,在最后一个选项设置属性选择添加,然后选择 debug Maven构建

您需要设置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上的错误),当您的实体没有正确注释时,这些库通常会抛出无信息异常,如空指针。

相关内容

  • 没有找到相关文章

最新更新