当我尝试使用 ant 在 Netbeans 中构建企业项目时,我遇到了以下异常:
警告:注释中支持的源版本"RELEASE_6" 处理器 'org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor' 小于源"1.8" 注意:创建静态元数据工厂...
注释处理器抛出未捕获的异常。 有关详细信息,请参阅以下堆栈跟踪。 java.lang.ClassFormatError:在类文件中不是本机或抽象的方法中缺少代码属性 javax/persistence/PersistenceException
我的 ejb 模块中只有一些entity
类。
此错误在 NetBeans 中报告为错误(状态已解决,因为它被视为"用户错误"(。以下是解释问题并给出解决方案的主要评论:
"类格式错误:方法中缺少代码属性..."始终指示 javaee-api-6.0.jar 用于运行时执行。jar 仅包含方法签名(方法主体被剥离(,并且仅适用于编译。在javac的未来版本中,可能会有更好的错误消息。
这里的问题是javaee-api-6.0.jar在EclipseLink jars之前位于类路径上,当EclipseLink注释处理器启动时.jar使用javaee-api-6.0中的类而不是EclipseLink中的类。首先,应该从 EJB 项目的类路径中删除 javaee-api-6.0.jar - 它不应该是必需的,因为 EJB 项目选择了应用程序服务器,并且该项目从该服务器获取 EE 6 API。
据我了解,您应该尝试从项目的类路径中删除对javaee-api-6.0.jar(仅包含"虚拟"类(的任何引用,因为EclipseLink库应提供注释处理器使用的正确类。
此外,这个问题似乎解决了同样的问题。
当您使用插入代码和自动创建 Bean 时,它会添加 Java EE 6 接口库 .我删除了库并添加了Java EE 7 API。