26

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

5 に答える 5

42

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たとえばターゲットアプリケーションサーバーによって提供される依存関係からこれらのクラスを取得することです。たとえば、次のように使用できます。

   <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 ですが、通常のクラスが含まれています。

于 2012-08-27T13:40:38.510 に答える
6

奇妙ですが、次の順序でうまくいきます。

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

逆はうまくいきません。

于 2016-11-30T06:55:39.943 に答える
4

私の場合、ライブラリのみを使用します:

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

JDK 6 と Tomcat で問題なく実行

于 2012-08-27T13:39:28.293 に答える
0

これらを次の順序で pom に追加すると、 javax.mail javaee-web-api という順序で動作することはかなり論理的です。これは、ランタイムが javax.mail から必要なクラスを最初に (適切な実装で) 見つけ、同様のものを無視するためです。 javaee-web-api のクラス (実装なし)。

于 2018-02-22T09:49:15.327 に答える