Я нашел несколько сообщений, связанных с этой проблемой, но ничего не помогло. Я получаю эту ошибку. Я используя муравей как инструмент сборки. Я пробовал разные 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)
В качестве примечания - в StackOverflow есть масса существующих вопросов о ClassFormatError - javadoc говорит выдается, когда файл класса определяет, что файл искажен или иным образом не может быть интерпретирован как файл класса.
@krease Я просмотрел упомянутый вами пост, но я не использую Maven. и у меня есть отдельное приложение, оно не работает ни на одном сервере.
Код @samzSakerz добавлен




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