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.