Java.lang.ClassFormatError: Отсутствует атрибут кода в методе, который не является родным или абстрактным в файле класса javax / persistence / Persistence

Я нашел несколько сообщений, связанных с этой проблемой, но ничего не помогло. Я получаю эту ошибку. Я используя муравей как инструмент сборки. Я пробовал разные Jar-файлы, такие как 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)

Проголосовали против, потому что вместо кода предоставлено изображение.

SamHoque 10.12.2018 19:53

В качестве примечания - в StackOverflow есть масса существующих вопросов о ClassFormatError - javadoc говорит выдается, когда файл класса определяет, что файл искажен или иным образом не может быть интерпретирован как файл класса.

Krease 10.12.2018 20:08

@krease Я просмотрел упомянутый вами пост, но я не использую Maven. и у меня есть отдельное приложение, оно не работает ни на одном сервере.

Brijs001 10.12.2018 20:21

Код @samzSakerz добавлен

Brijs001 10.12.2018 20:30
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
4
604
1

Ответы 1

Проблема устранена. На самом деле я использовал Groovy, и возникла проблема несоответствия версий, которая каким-то образом закончилась тем, что я получил эту ошибку. Точно не знаю почему. но как только я изменил плагин groovy с 2.0 на 2.4, он решил эту ошибку времени выполнения. Спасибо.

Другие вопросы по теме