java.lang.ClassFormatError: attribut Code absent dans la méthode non native ou abstraite dans le fichier de classe …​

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

Problème

Un problème très étrange et rare s'est produit dans le développement JPA ou 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

Solution

Ceci est toujours causé par lesjavaee.jar qui se trouvent sur Java.net. De nombreux développeurs aiment saisir lesjavaee.jar avec la coordonnée Maven suivante:

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

  
    
    
        javax
        javaee-api
        6.0
    
  

Mais, lejavaee.jar de java.net ne contient aucun corps de méthode, mais uniquement le nom des API. Ce qui ne convient pas pour exécuter ou déployer avec votre application.

La bonne pratique consiste toujours à obtenir la version complète d'origine du fichierjavaee.jar à partir deshttp://java.sun.com/javaee/. Téléchargez et installez simplement le SDK J2EE, et lesjavaee.jar se trouvent dans le dossier «\ J2EE_SDK_FOLDER \ lib». Si vous l'incluez dans votre référentiel Maven local, le chemin de classe du projet supprimera le message d'erreur ci-dessus.