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
溶液
これは常にJava.netにあるjavaee.jarによって引き起こされます。 多くの開発者は、次のMaven座標でjavaee.jarを取得することを好みます。
Java.Net http://download.java.net/maven/2/ javax javaee-api 6.0
ただし、java.netのjavaee.jarにはメソッド本体は含まれていませんが、API名のみが含まれています。 これは、アプリケーションと一緒に実行またはデプロイするのに適していません。
常にhttp://java.sun.com/javaee/から元のフルバージョンのjavaee.jarファイルを取得することをお勧めします。 J2EE SDKをダウンロードしてインストールするだけで、javaee.jarは「\ J2EE_SDK_FOLDER \ lib」フォルダーにあります。 ローカルのMavenリポジトリに含めるか、プロジェクトのクラスパスで上記のエラーメッセージを取り除きます。