【问题标题】:How do I compile in debug mode? (netbeans, java, maven)如何在调试模式下编译? (网豆,Java,行家)
【发布时间】:2011-11-16 16:36:59
【问题描述】:

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

NullPointerException when trying to resolve the entities (org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor.discoverMappedSuperclassesAndInheritanceParents(EntityAccessor.java:224)).

如何调试此类错误以找到有关错误原因的更多信息?

EntityAccessor 中设置断点并进行调试编译不起作用,编译器本身似乎没有在调试模式下运行。

我正在使用 Netbeans/Java/Maven。

【问题讨论】:

  • 编译器在启动时抛出此异常或应用程序?请发布完整的堆栈跟踪。

标签: java debugging netbeans compiler-construction maven


【解决方案1】:

据我了解,您希望在编译中进行调试,而不是在调试模式下进行 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 格式输入的三个值中的任何一个 强调一下,debugdebuglevel 是 maven 中包含的重要节点。

希望它在某些方面有所帮助。

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

【讨论】:

  • “据我了解,您希望在编译中进行调试,而不是在调试模式下使用 maven。”确切地。我降落在这里寻找后者,OP想要前者的解决方案。 Prunge 的回答涵盖了这一点。
【解决方案2】:

您可以在 NetBeans 中调试任何 Maven 目标,转到 /Project Properties/Actions/,选择要调试的目标,在最后一个选项 Set Properties 中选择 Add,然后选择调试 Maven 构建

【讨论】:

    【解决方案3】:

    您需要设置jpda.listen=maven 属性。

    在 Netbeans 8+ 中:

    1.在构建时选择要调试的模块。

    2.右击打开上下文菜单,然后选择Properties

    3.选择Actions类别。

    4.然后选择Clean and build project Action。

    5.Set Properties 部分下,选择Add > Debug Maven Build

    6.点击OK按钮关闭并保存您的设置。

    现在您应该可以设置断点并调试 maven 插件和依赖项了。

    【讨论】:

    • 但是我仍然收到我需要设置“-g 选项”的消息,也许你知道该怎么做?
    【解决方案4】:

    您是否在调试模式下运行 Maven?

    要在调试模式下运行 Maven,请使用命令 mvnDebug 而不是 mvn 来构建您的项目,然后使用您的 IDE 附加到它。调试断点应该被命中。

    我用 Eclipse 完成了这项工作,主要是在尝试调试我自己的注释处理器时,但它对于调试 Maven 插件也很方便。

    我认为调试 JPA 处理器并非易事 - 您最好再次查看整个错误消息或将其发布在您的问题中。

    【讨论】:

    【解决方案5】:

    您需要在org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor 类中设置断点,并且应该在服务器启动期间停止(您需要在调试模式下启动)。这并不是真正的编译,而只是 JPA 从类注释中加载其元数据。因为您的 JPA 提供程序的代码不是您可以轻松理解或修改的代码,所以我建议您不要调试,而是尝试在网上搜索您的特定错误并查看其他人是否经历过它(即可能是 Eclipse Link 上的错误) ,当您的实体未正确注释时,这些库通常会抛出像空指针这样的无信息异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-10
      • 1970-01-01
      • 2021-11-24
      • 2020-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多