【问题标题】:java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/persistence/Persistence [duplicate]java.lang.ClassFormatError:类文件javax/persistence/Persistence中非本机或抽象方法中的缺失代码属性[重复]
【发布时间】:2018-12-10 18:52:35
【问题描述】:

我发现很少有与此问题相关的帖子,但没有一个有助于解决我收到此错误。 我使用 ant 作为构建工具。 我尝试了不同的罐子,如 openjpa-persistence-1.2.1.jar、eclipselink-2.4.1、hibernate-jpa-2.0-api-1.0.1.Final-sources, 并且还使用了 javaee-api-6.0.jar 并将它们放入构建路径中,以查看是否找到了 persistence.class 主体。 但没有任何帮助。任何帮助是极大的赞赏。

Persistence.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)

【问题讨论】:

  • 投反对票,因为提供的是图片而不是代码。
  • 请注意 - StackOverflow 上有大量关于 ClassFormatError 的现有问题 - javadoc says 当类文件确定文件格式错误或无法解释为类文件时抛出。
  • @krease 我查看了您提到的帖子,但我没有使用 Maven。我有一个独立的应用程序,它没有在任何服务器上运行。
  • @samzSakerz 代码已添加

标签: java eclipse hibernate jpa persistence


【解决方案1】:

问题已解决。实际上我使用的是 Groovy 并且有一个版本不匹配的问题,不知何故最终给了我这个错误。我不知道具体为什么。但是一旦我将 groovy 插件从 2.0 更改为 2.4,它就解决了这个运行时错误。 谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    相关资源
    最近更新 更多