web-dev-qa-db-ja.com

java.lang.NoClassDefFoundError:javax / mail / MessagingExceptionが未解決

Javax.mail jarをクラスパスに追加しようとしていますが、次のエラーが発生します。

Java.lang.NoClassDefFoundError: javax/mail/MessagingException
    at Java.lang.Class.getDeclaredConstructors0(Native Method)
    at Java.lang.Class.privateGetDeclaredConstructors(Class.Java:2663)
    at Java.lang.Class.getDeclaredConstructors(Class.Java:2012)
    at org.springframework.beans.factory.annotation.

Pom.xmlに依存関係を追加することで修正できる可能性があることを他の投稿で読んだので、次のようにしました。

pom.xml

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

project

しかし、それでもエラーが発生します..誰かがこれを手伝ってくれますか?

7
Rafael Reyes

また、1.4.3バージョンでは、メールと呼ばれるアーティファクトIDはなくなりました。 1.4.3を使用する場合は、この依存関係を使用する必要があります

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mailapi</artifactId>
    <version>1.4.3</version>
</dependency>
8
vanval

JarをサーバーTomcatに追加する必要があります。

  1. 起動構成を開く

    You should open launch configuration

  2. 外部jarを追加します(メールjarを探します)

    Add external jar and look for your email jar

1

javax/mail/MessagingExceptionはすでにバージョン1.4に存在します。したがって、これはIDE内のアセンブリの問題にすぎないと思います。 pomの依存関係を更新し、アーティファクトをチェックするIDEビルドアップで十分です。

1
fateddy

私も同様のエラーに直面していました。以下の2つの手順を試してください(最初の手順はすでにここで推奨されています)-1。依存関係をpom.xmlに追加します

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

  1. それでも問題が解決しない場合は、jarファイルを.m2\repository\javax\<folder>\<version>\ディレクトリに手動で配置します。
0
Manan Shah

Java MailAPIの最新バージョンは

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>javax.mail-api</artifactId>
    <version>1.5.2</version>
</dependency>

このバージョンでも同じエラーが発生しますか?

0
Harald Wellmann

maven-dependency-pluginを使用して、プロジェクトの依存関係を別の場所にコピーします。

これをpom.xmlに追加します

 <plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <configuration>
      <archive>
        <manifest>
        <addClasspath>true</addClasspath>
        <mainClass>com.mkyong.core.App</mainClass>
        <classpathPrefix>dependency-jars/</classpathPrefix>
        </manifest>
      </archive>
    </configuration>
  </plugin>
  <plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.5.1</version>
    <executions>
      <execution>
        <id>copy-dependencies</id>
        <phase>package</phase>
        <goals>
            <goal>copy-dependencies</goal>
        </goals>
        <configuration>
            <outputDirectory>
                          ${project.build.directory}/dependency-jars/
                    </outputDirectory>
        </configuration>
        </execution>
    </executions>
  </plugin>

以下のマニフェストファイルが生成されます。プロジェクトの依存関係は{project}/target/dependency-jars /にコピーされます。

manifest-Version: 1.0
Built-By: mkyong
Build-Jdk: 1.6.0_35
Class-Path: dependency-jars/log4j-1.2.17.jar
Created-By: Apache Maven
Main-Class: com.mkyong.core.App
Archiver-Version: Plexus Archiver

これは私のために働いた。出典: MKyong.com

0

このクラスは、私が今まで使用したJavamailのすべてのバージョンに存在しています。明らかに、他のClassNotFoundExceptionと同様に、CLASSPATHにJavamailJARがありません。

0
user207421

Mavenを使用してクラスパスを混合し、Eclipseで手動で参照を追加しました。

「mavennature」を無効にして、コマンドラインでmvn Eclipse:cleanを作成し、プロジェクトを更新してconvert it to maven projectしてから、再試行してください。

明確にするために:pomのどこにメールAPIを追加しましたか? <dependecies>の下、または<dependecyManagementの下?

0
Jens