簡體   English   中英

java.lang.ClassFormatError:在類文件 javax/mail/MessagingException 中非本機或抽象的方法中缺少代碼屬性

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

我對 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>

它沒有用。 任何的想法??

它不起作用,因為來自javax/javaee-api/provided依賴項的類是專門構造的。 它們不是可用的運行時,因為缺少方法的實現。

簡單地將javax.mail/mail/1.4.5依賴項中的類添加到類路徑沒有幫助,因為javax/javaee-api/provided中的類已經存在。 單獨使用javax.mail/mail/1.4.5依賴可以解決您的問題,但很可能您還需要來自javax/javaee-api/provided其他類。

您可以做的是擺脫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 相同,但它包含普通類。

奇怪,但以下順序對我有用,

    <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>

反過來不行。

就我而言,只使用庫:

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

使用 JDK 6 和 Tomcat 運行沒有問題

如果您按以下順序將它們添加到您的 pom 中:javax.mail javaee-web-api 它可以工作是非常合乎邏輯的,因為運行時首先從 javax.mail 找到必要的類(具有正確的實現),忽略任何類似的來自 javaee-web-api 的類(沒有實現)。

在我的情況下,我使用以下順序。 與 JDK6 配合得很好。

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4</version>
    <scope>provided</scope>
    <exclusions>
        <exclusion>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
        </exclusion>
    </exclusions>
</dependency>

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM