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

终端运行Maven打包Fat-Jar时出现java.lang.NoClassDefFoundError求助

解决思路
  • 检查Fat Jar是否包含缺失类
    执行命令 jar tf projectName.jar | grep "缺失类的完整类名"(例如com.example.MissingClass),确认该类是否存在于Jar包内。如果未找到,说明打包过程中未将对应依赖类纳入。

  • 排查Maven依赖范围
    查看pom.xml中目标依赖的scope属性:若设置为provided或test,maven-assembly-plugin默认不会将这类依赖打包进Fat Jar,但IntelliJ运行时会自动加载该类依赖。如果该依赖是运行必需项,将scope改为compile;若必须保留provided,需在assembly插件配置中手动添加该依赖的打包规则。

  • 处理依赖冲突
    执行 mvn dependency:tree 查看项目依赖树,检查是否存在包含同名类的冲突依赖。找到冲突后,在pom.xml中通过<exclusions>标签排除多余依赖,避免打包时类被覆盖。

  • 升级maven-assembly-plugin版本
    当前使用的2.6版本较老旧,存在已知打包缺陷。将插件版本升级至3.6.0(或最新稳定版)后重新打包尝试。

  • 尝试替换为maven-shade-plugin
    若assembly插件仍无法解决问题,可改用maven-shade-plugin打包Fat Jar,它对类冲突、依赖合并的处理更完善。示例配置如下:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.5.1</version>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>shade</goal>
                </goals>
                <configuration>
                    <transformers>
                        <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                            <mainClass>你的主类全路径</mainClass>
                        </transformer>
                    </transformers>
                </configuration>
            </execution>
        </executions>
    </plugin>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 22:12:44