当我尝试使用ant在Netbeans中构建我的企业项目时,我遇到了这个例外:
警告:支持的源版本' RELEASE_6'来自注释 处理器 ' org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor' 少于-source' 1.8' 注意:创建静态元数据工厂......
注释处理器抛出了未捕获的异常。 有关详细信息,请参阅以下堆栈跟踪 java.lang.ClassFormatError:在类文件中不是本机或抽象的方法中的Absent Code属性 的javax /持久/的PersistenceException
我的ejb模块中只有一些entity
个类。
答案 0 :(得分:4)
此错误报告为bug in NetBeans(已解决状态,因为它被视为"用户错误")。以下是解释问题并给出解决方案的主要评论:
" ClassFormatError:方法中缺少代码属性..."始终表明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(仅包含" dummy"类)的任何引用,因为EclipseLink库应该提供注释处理器使用的正确类。
此外,this question似乎也解决了同样的问题。
答案 1 :(得分:0)
当您使用插入代码和自动bean创建时,它会添加Java EE 6 API库。我删除了库并添加了Java EE 7 API。