终端运行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
相关产品推荐
相关产品推荐

