【问题标题】:NetBeans 8.2 - Weblogic - Ant buildNetBeans 8.2 - Weblogic - Ant 构建
【发布时间】:2017-12-28 12:40:52
【问题描述】:
当我尝试使用 ant 在 Netbeans 中构建我的企业项目时,我遇到了这个异常:
警告:注释中支持的源版本“RELEASE_6”
处理器
'org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor'
小于 -source '1.8'
注意:创建静态元数据工厂 ...
注释处理器引发了未捕获的异常。
有关详细信息,请参阅以下堆栈跟踪。
java.lang.ClassFormatError:类文件中非本机或抽象方法中的缺失代码属性
javax/persistence/PersistenceException
我的 ejb 模块中只有一些 entityclasses。
【问题讨论】:
标签:
java
jakarta-ee
netbeans
ant
【解决方案1】:
当您使用插入代码和自动创建 bean 时,它会添加 Java EE 6
API 库。我删除了该库并添加了 Java EE 7 API。
【解决方案2】:
此错误报告为bug in NetBeans(状态为已解决,因为它被认为是“用户错误”)。以下是解释问题并给出解决方案的主要评论:
“ClassFormatError: Absent Code attribute in method...”始终表明 javaee-api-6.0.jar 用于运行时执行。 jar 只包含方法签名(方法体被剥离)并且只适合编译。在 javac 的未来版本中可能会有更好的错误消息。
这里的问题是 javaee-api-6.0.jar 在 EclipseLink jar 之前的类路径上,并且当 EclipseLink 注释处理器启动时,使用 javaee-api-6.0.jar 中的类而不是 EclipseLink 中的类。 首先应该从 EJB 项目的类路径中删除 javaee-api-6.0.jar - 因为 EJB 项目选择了应用程序服务器并且项目从该服务器获取 EE 6 API,所以不需要它。
据我了解,您应该尝试从项目的类路径中删除对 javaee-api-6.0.jar(仅包含“虚拟”类)的任何引用,因为 EclipseLink 库应该提供正确的类注释处理器。
另外,this question 似乎也解决了同样的问题。