java.lang.ClassFormatError: отсутствует атрибут кода в методе, который не является собственным или абстрактным в файле класса …​

java.lang.ClassFormatError : Absent Code attribute in method that is not native or abstract in class file …

проблема

Очень странная и редкая проблема произошла в JPA или разработке Hibernate.

Caused by: java.lang.ClassFormatError: Absent Code attribute in method that is
        not native or abstract in class file javax/persistence/GenerationType

    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$000(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknow

Решение

Это всегда вызваноjavaee.jar, который находится на Java.net. Многим разработчикам нравится использоватьjavaee.jar со следующей координатой Maven:

  
    
        Java.Net
        http://download.java.net/maven/2/
    
  

  
    
    
        javax
        javaee-api
        6.0
    
  

Ноjavaee.jar из java.net не содержит никаких тел методов, а только имя API. Который не подходит для запуска или развертывания вместе с вашим приложением.

Хорошая практика - всегда получать исходную полную версию файлаjavaee.jar изhttp://java.sun.com/javaee/. Просто загрузите и установите J2EE SDK, иjavaee.jar можно будет найти в папке «\ J2EE_SDK_FOLDER \ lib». Включите его в свой локальный репозиторий Maven или путь к классам poject, чтобы избавиться от вышеуказанного сообщения об ошибке.

Related