java.lang.NoClassDefFoundError: javax/mail/MessagingException unsolved

java.lang.NoClassDefFoundError: javax/mail/MessagingException unsolved

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

我在其他 post 中读到可以通过向 pom.xml 添加依赖项来修复它,所以我做到了:

pom.xml

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

但我仍然收到错误..有人可以帮我解决这个问题吗?

Java 邮件API 的最新版本是

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

你用这个版本有同样的错误吗?

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

另外,在 1.4.3 版本中,不再有名为 mail 的工件 ID。如果你想使用 1.4.3,你应该使用这个依赖项

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

这个 class 在我使用过的所有版本的 Javamail 中都存在。很明显,您的 CLASSPATH 上没有 Javamail JAR,对于任何其他 ClassNotFoundException。

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

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

澄清一下:你把邮件api添加到pom的什么地方了?在 <dependecies><dependecyManagement 之下?

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

  1. 打开启动配置

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

甚至我也遇到了类似的错误。尝试以下 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>\ 目录。

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

我在 javax.mail.Activator class 中遇到了类似的问题。解决方案已从 war javax.mail 和 javax.activation 中删除并将其添加到 {tomcat}\lib 文件夹