首页 文章

java.lang.ClassFormatError:在类文件javax / mail / MessagingException中非本机或抽象的方法中的Absent Code属性

提问于
浏览
23

我对javaee Bibliothek有一个maven依赖 .

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>6.0</version>
    <scope>provided</scope>
</dependency>

我在某些类中遇到Eclipse中的错误 .

java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/mail/MessagingException

我添加了javax.mail依赖项 .

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.5</version>
</dependency>

它没有用 . 任何的想法??

4 回答

  • 4

    如果你按照这个顺序将它们添加到你的pom:javax.mail javaee-web-api它的工作原理是非常合乎逻辑的,因为运行时首先从javax.mail中找到必要的类(使用正确的实现),忽略任何类似的来自javaee-web-api的class(没有实现) .

  • 0

    很奇怪,但以下顺序对我有用,

    <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4</version>
        </dependency>
    
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>
    

    反过来不行 .

  • 4

    它不起作用,因为来自 javax/javaee-api/provided 依赖的类是特殊构造的 . 它们不可用于运行时因为缺少方法的实现 .

    简单地将 javax.mail/mail/1.4.5 依赖项中的类添加到类路径中没有用,因为 javax/javaee-api/provided 中的类已经存在 . 单独使用 javax.mail/mail/1.4.5 dependecy可以解决您的问题,但很可能您还需要来自 javax/javaee-api/provided 的其他类 .

    你可以做的是摆脱 javax/javaee-api/provided 依赖,并从目标应用程序服务器提供的依赖项中获取这些类 . 您可以使用以下示例:

    <dependency>
            <groupId>org.jboss.spec</groupId>
            <artifactId>jboss-javaee-6.0</artifactId>
            <version>1.0.0.Final</version>
            <type>pom</type>
            <scope>provided</scope>
         </dependency>
    

    由于提供了范围,因此不会影响要构建的工件 . 这就是为什么你可以将这个应用程序与JBoss之外的其他应用程序服务器一起使用 . 它与原始依赖项中的API相同,但它包含普通类 .

  • 35

    在我的情况下,只使用库:

    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4</version>
    </dependency>
    

    使用JDK 6和Tomcat运行没有问题

相关问题