[英]java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/mail/internet/ParseException
[英]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.