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>
しかし、それでもエラーが発生します..誰かがこれを手伝ってくれますか?
また、1.4.3バージョンでは、メールと呼ばれるアーティファクトIDはなくなりました。 1.4.3を使用する場合は、この依存関係を使用する必要があります
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mailapi</artifactId>
<version>1.4.3</version>
</dependency>
JarをサーバーTomcatに追加する必要があります。
起動構成を開く
外部jarを追加します(メールjarを探します)
javax/mail/MessagingException
はすでにバージョン1.4に存在します。したがって、これはIDE内のアセンブリの問題にすぎないと思います。 pomの依存関係を更新し、アーティファクトをチェックするIDEビルドアップで十分です。
私も同様のエラーに直面していました。以下の2つの手順を試してください(最初の手順はすでにここで推奨されています)-1。依存関係をpom.xml
に追加します
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.3</version>
</dependency>
jar
ファイルを.m2\repository\javax\<folder>\<version>\
ディレクトリに手動で配置します。Java MailAPIの最新バージョンは
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.5.2</version>
</dependency>
このバージョンでも同じエラーが発生しますか?
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
このクラスは、私が今まで使用したJavamailのすべてのバージョンに存在しています。明らかに、他のClassNotFoundExceptionと同様に、CLASSPATHにJavamailJARがありません。
Mavenを使用してクラスパスを混合し、Eclipseで手動で参照を追加しました。
「mavennature」を無効にして、コマンドラインでmvn Eclipse:clean
を作成し、プロジェクトを更新してconvert it to maven project
してから、再試行してください。
明確にするために:pomのどこにメールAPIを追加しましたか? <dependecies>
の下、または<dependecyManagement
の下?