【问题标题】:java.lang.NoClassDefFoundError: javax/mail/MessagingException unsolvedjava.lang.NoClassDefFoundError: javax/mail/MessagingException 未解决
【发布时间】:2020-09-27 02:51:32
【问题描述】:

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

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

【问题讨论】:

  • 尝试清除项目并重建它。
  • @Jens 完成!但仍然得到同样的错误。

标签: java maven jakarta-mail


【解决方案1】:

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

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

【讨论】:

  • 什么时候出现这个错误?如果你使用 tomcat 运行代码,你应该检查邮件 jar 是否可以被 tomcat 访问 - 即它应该在 war\WEB-INF\lib 或 shared\lib 文件夹中。
  • 服务器启动时出现错误@vanval
  • 那么看起来你的服务器找不到邮件jar。如果你的服务器是tomcat,在你的war被webapps下的tomcat引爆后,放到这个位置:webapps\\WEB-INF\lib,然后检查错误是否重复。
  • 他们说“向后兼容性”
【解决方案2】:

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

【讨论】:

  • 其他用户已经提到 - 找不到该类,因为它可能不是由您的 IDE 组装的。尝试检查您的 IDE 构建的工件。还可以尝试清理、重建、取消部署和部署应用程序等。
【解决方案3】:

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

  1. 打开启动配置

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

【讨论】:

    【解决方案4】:

    Java Mail API 的最新版本是

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

    这个版本你也遇到同样的错误吗?

    【讨论】:

      【解决方案5】:

      这个类出现在我用过的所有版本的 Javamail 中。显然,您的 CLASSPATH 上没有 Javamail JAR,与任何其他 ClassNotFoundException 一样。

      【讨论】:

      • 我不使用那个 IDE,所以我不能发表评论,但我的答案仍然存在。例外证明了这一点。
      【解决方案6】:

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

      禁用“maven 性质”在命令行上创建 mvn eclipse:clean 刷新您的项目和 convert it to maven project,然后重试。

      澄清:你在 pom 中的哪里添加了邮件 api?在&lt;dependecies&gt; 下还是&lt;dependecyManagement 下?

      【讨论】:

        【解决方案7】:

        即使我也面临类似的错误。尝试以下 2 个步骤(这里已经推荐了第一个步骤)- 1. 将依赖添加到你的pom.xml

                 <dependency>
                    <groupId>javax.mail</groupId>
                    <artifactId>mail</artifactId>
                    <version>1.4.3</version>
                </dependency>
        
        
        1. 如果这不起作用,请手动将 jar 文件放入您的 .m2\repository\javax\&lt;folder&gt;\&lt;version&gt;\ 目录中。

        【讨论】:

          【解决方案8】:

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

          【讨论】:

            【解决方案9】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-07-14
              • 1970-01-01
              • 2023-01-13
              • 1970-01-01
              • 2018-06-22
              相关资源
              最近更新 更多