我正在尝试使用以下代码扫描我的实体类以获取JPA @Column
注释;
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作为我的依赖项的一部分。有谁知道我做错了什么?
线程“main”中的异常java.lang.ClassFormatError:Absent Code 方法中的属性在类文件中不是本机的或抽象的 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) 在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 at java.lang.ClassLoader.loadClass(ClassLoader.java:356)at java.lang.Class.getDeclaredMethods0(Native Method)at java.lang.Class.privateGetDeclaredMethods(Class.java:2442)at at java.lang.Class.getDeclaredMethods(Class.java:1808)at sun.reflect.annotation.AnnotationType $ 1.run(AnnotationType.java:104) 在 sun.reflect.annotation.AnnotationType $ 1.run(AnnotationType.java:101) 在java.security.AccessController.doPrivileged(Native Method)at sun.reflect.annotation.AnnotationType。(AnnotationType.java:100) 在 sun.reflect.annotation.AnnotationType.getInstance(AnnotationType.java:84) 在 sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:221) 在 sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:88) 在 sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:70) 在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)
答案 0 :(得分:2)
你的jar不包含任何方法体,但只包含API规范。这不适合用于与应用程序一起运行或部署。提取jar在反编译器中打开类,你就会知道为什么它没有运行。我不知道你从哪里得到javax-api jar但你肯定需要这个jar的原始完整版。