java.lang.ClassFormatError: Nicht vorhandenes Codeattribut in einer Methode, das nicht nativ oder abstrakt in der Klassendatei ist

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

Problem

Ein sehr seltsames und seltenes Problem ist in der JPA- oder Hibernate-Entwicklung aufgetreten.

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

Lösung

Dies wird immer durch diejavaee.jar verursacht, die sich auf Java.net befinden. Viele Entwickler greifen gerne zujavaee.jar mit der folgenden Maven-Koordinate:

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

  
    
    
        javax
        javaee-api
        6.0
    
  

Dasjavaee.jar von java.net enthält jedoch keine Methodenkörper, sondern nur den Namen der APIs. Welches nicht geeignet ist, um zusammen mit Ihrer Anwendung ausgeführt oder bereitgestellt zu werden.

Es wird empfohlen, immer die ursprüngliche Vollversion derjavaee.jar-Datei aushttp://java.sun.com/javaee/ abzurufen. Laden Sie einfach das J2EE SDK herunter und installieren Sie es. Diejavaee.jar befinden sich im Ordner "\ J2EE_SDK_FOLDER \ lib". Wenn Sie es in Ihr lokales Maven-Repository oder in den Klassenpfad von poject aufnehmen, wird die obige Fehlermeldung beseitigt.