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

时间:2011-11-16 16:37:00

标签: java debugging netbeans compiler-construction 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。

5 个答案:

答案 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这样的无法提供的异常。