java.lang.NoClassDefFoundError:javax / mail / MessagingException未解决

时间:2015-02-02 20:11:32

标签: java maven javax.mail

我正在尝试将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

但我仍然得到错误..有人可以帮我这个吗?

9 个答案:

答案 0 :(得分:8)

同样在1.4.3版本中,不再存在名为mail的工件ID。如果要使用1.4.3,则应使用此依赖项

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

答案 1 :(得分:1)

您应该将jar添加到服务器Tomcat。

  1. 打开启动配置

    You should open launch configuration

  2. 添加外部jar(查找您的电子邮件jar)

    Add external jar and look for your email jar

答案 2 :(得分:0)

最新版本的Java Mail API是

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

这个版本会出现同样的错误吗?

答案 3 :(得分:0)

版本1.4中已存在javax/mail/MessagingException。所以我想这只是IDE中的一个程序集问题。刷新pom依赖项并检查IDE构建的工件应该足够了。

答案 4 :(得分:0)

此类已存在于我曾使用的所有Javamail版本中。显然,您的CLASSPATH上没有Javamail JAR,就像任何其他ClassNotFoundException一样。

答案 5 :(得分:0)

您使用maven混合了类路径,并在eclipse中手动添加了引用。

禁用“maven nature”命令行上的mvn eclipse:clean刷新项目并convert it to maven project,然后重试。

要澄清:你在哪里添加了pom中的邮件api?在<dependecies>下或<dependecyManagement下?

答案 6 :(得分:0)

即使我遇到了类似的错误。请尝试以下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>\目录中。

答案 7 :(得分:0)

您将使用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

答案 8 :(得分:0)

我对javax.mail.Activator类有类似的问题。解决方法是从war javax.mail和javax.activation中删除并将其添加到{tomcat} \ lib文件夹