You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven打包可执行Jar出现NoClassDefFoundError: javax/mail/MessagingException

Maven打包Java邮件项目问题排查与解决

问题现象

基于Maven构建的Java邮件发送项目(使用Eclipse开发),在Eclipse内运行完全正常,但打包成可执行Jar后执行java -jar myjar.jar时出现以下错误:

Error: Unable to initialize main class com.my.package.MyClass
Caused by: java.lang.NoClassDefFoundError: javax/mail/MessagingException

现有配置

依赖配置

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.2</version>
</dependency>

插件配置

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <version>3.0.2</version>
  <configuration>
    <archive>
      <manifest>
        <addClasspath>true</addClasspath>
        <mainClass>com.mypackage.MyClass</mainClass>
      </manifest>
    </archive>
  </configuration>
</plugin>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-shade-plugin</artifactId>
  <version>3.1.1</version>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>shade</goal>
      </goals>
      <configuration>
        <transformers>
          <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
            <mainClass>com.mypackage.MyClass</mainClass>
            <manifestEntries>
              <Multi-Release>true</Multi-Release>
            </manifestEntries>
          </transformer>
          <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
        </transformers>
        <filters>
          <filter>
            <artifact>*:*</artifact>
            <excludes>
              <exclude>META-INF/*.SF</exclude>
              <exclude>META-INF/*.DSA</exclude>
              <exclude>META-INF/*.RSA</exclude>
            </excludes>
          </filter>
        </filters>
      </configuration>
    </execution>
  </executions>
</plugin>

排查过程

  • 已确认Maven依赖列表中存在javax.mail-1.6.2.jar,但仍出现类找不到的错误
  • 尝试过调整maven-shade-plugin和maven-jar-plugin的多种配置,无法解决问题
  • 改用maven-assembly-plugin并配置主类后,出现no main manifest attribute, in myjar.jar错误
  • 重新添加maven-jar-plugin并配置主类,又回到最初的NoClassDefFoundError错误
  • 解压Jar包查看Manifest文件,发现缺少Main-Class配置项,Manifest内容如下:
Manifest-Version: 1.0
Created-By: Apache Maven 3.8.4
Built-By: myUserName
Build-Jdk: 15

解决方法

在Eclipse中执行两次Maven构建命令:

  1. 先执行:clean package
  2. 再执行:clean compile assembly:single

内容的提问来源于stack exchange,提问作者jasonwardenburg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 20:55:58