java - 线程中的异常 "main"java.lang.ClassFormatError : Absent Code attribute

标签 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 作为依赖项的一部分加载。有谁知道我做错了什么?

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)

最佳答案

您的 jar 不包含任何方法体,而仅包含 API 规范。这不适合与您的应用程序一起运行或部署。提取 jar 文件并在反编译器中打开类,您将了解它为何未运行。我不确定你从哪里获得 javax-api jar,但你肯定需要这个 jar 的原始完整版本。

关于java - 线程中的异常 "main"java.lang.ClassFormatError : Absent Code attribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16416375/

相关文章:

Tomcat 8 + OPenJDK 8 64 位 - 内存使用

java - Hibernate 3.3 继承@IdClass 中的@DiscriminatorColumn

java - 更新连接表中的值很麻烦 spring data JPA

java - 实现 "reorderable"实体的最佳方式

java - 字符串池在从方法返回值的情况下是否有效?

JavaFX 多语言 .properties 文件编码

java - 无法用maven编译Impala的前端

java - 如何避免兄弟子模块上的 Maven 版本?

Maven 构建模块乱序

java - 当 Java 需要 JVM 来运行时,它是如何独立于平台的?