eclipse java。lang.ClassFormatError:在类文件javax/persistence/persistence中,方法中缺少非本机或抽象的代码属性
我发现与这个问题相关的帖子很少,但没有一篇帮助我解决这个错误。 我正在使用ant作为构建工具。 我尝试了不同的jar,比如openjpa-persistence-1.2.1。jar,eclipselink-2.4.1,hibernate-jpa-2.0-api-1.0.1。最终来源,也使用了javaee-api-6.0。jar并将它们放入构建路径中,以查看它是否找到了持久性。不管是不是阶级团体。 但没有任何帮助。非常感谢您的帮助
坚持。xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jar-file>lib/dependentProject.jar</jar-file>
<properties>
<property name="javax.persistence.validation.mode" value="none" />
<property name="hibernate.archive.autodetection" value="class"/>
<property name="hibernate.show_sql" value="false"/>
<property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver"/>
<property name="hibernate.connection.username" value="XXX"/>
<property name="hibernate.connection.password" value="XXX"/>
<property name="hibernate.connection.url" value="connectionURL"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
</properties>
</persistence-unit>
</persistence>
抛出错误的代码
EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit")
错误消息:
Exception in thread "main" java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/persistence/Persistence
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
# 1 楼答案
问题解决了。实际上,我在使用Groovy时遇到了一个版本不匹配的问题,最终导致了这个错误。我不知道确切的原因。但当我将groovy插件从2.0改为2.4时,它就解决了这个运行时错误。 谢谢