线程“main”中的异常java.lang.ClassFormatError:Absent Code属性

时间:2013-05-07 10:07:02

标签: java maven jpa persistence

我正在尝试使用以下代码扫描我的实体类以获取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)

1 个答案:

答案 0 :(得分:2)

你的jar不包含任何方法体,但只包含API规范。这不适合用于与应用程序一起运行或部署。提取jar在反编译器中打开类,你就会知道为什么它没有运行。我不知道你从哪里得到javax-api jar但你肯定需要这个jar的原始完整版。