我正在嘗試使用下面的代碼掃描我的實體類JPA @Column
註釋;線程「main」中的異常java.lang.ClassFormatError:缺少代碼屬性
for (Method m : User.class.getMethods())
{
if (m.isAnnotationPresent(javax.persistence.Column.class))
{
javax.persistence.Column column = m.getAnnotation(javax.persistence.Column.class);
System.out.println(column.name());
}
}
但是我得到了異常。我可以確認我的javax-api jar是我的依賴項的一部分。有誰知道我做錯了什麼?
Exception in thread "main" java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/persistence/CascadeType at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:791) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:423) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2442) at java.lang.Class.getDeclaredMethods(Class.java:1808) at sun.reflect.annotation.AnnotationType$1.run(AnnotationType.java:104) at sun.reflect.annotation.AnnotationType$1.run(AnnotationType.java:101) at java.security.AccessController.doPrivileged(Native Method) at sun.reflect.annotation.AnnotationType.(AnnotationType.java:100) at sun.reflect.annotation.AnnotationType.getInstance(AnnotationType.java:84) at sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:221) at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:88) at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:70) at java.lang.reflect.Method.declaredAnnotations(Method.java:699) at java.lang.reflect.Method.getAnnotation(Method.java:685) at java.lang.reflect.AccessibleObject.isAnnotationPresent(AccessibleObject.java:189)
+1:如果你使用Eclipselink [試試這個](http://mvnrepository.com/artifact/org.eclipse.persistence/javax.persistence) – Aquillo 2013-05-07 10:13:26
Juned,更好的解釋是它是一個API規範而不是API。 – Aquillo 2013-05-07 10:14:20
我訴諸於glassfish實施API的特定版本,並工作。感謝Juned和Aquillo。 – Bitmap 2013-05-07 10:50:49