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

Maven Assembly Plugin打胖jar报错:找不到或无法加载主类

问题根源

你遇到的问题本质是 Spring Boot 可执行Jar有自定义的结构规范,不适合用maven-assembly插件生成普通胖Jar的方式打包,具体原因如下:

  • Spring Boot官方插件生成的可执行Jar采用自定义类加载逻辑:Main-Class指定为org.springframework.boot.loader.JarLauncher,业务主类作为Start-Class配置,启动时由JarLauncher负责加载BOOT-INF/classes下的业务代码和BOOT-INF/lib下的第三方依赖,兼容嵌套Jar、资源加载等Spring Boot特有逻辑。
  • maven-assembly插件生成的jar-with-dependencies是普通胖Jar,会把所有依赖的类直接解压后和业务类放在Jar根目录,不仅容易出现类覆盖冲突,也完全不兼容Spring Boot的类加载规范,所以会出现找不到主类、后续启动报资源加载错误等问题。
    同时你当前pom同时配置了spring-boot-maven-plugin和maven-assembly-plugin,两个插件的打包逻辑会互相干扰,assembly插件的配置完全是多余的。

解决方案

直接移除pom中的maven-assembly-plugin相关配置即可,你现有的spring-boot-maven-plugin配置已经可以满足生成包含所有依赖的可执行Jar的需求:

  1. 删掉pom中从<artifactId>maven-assembly-plugin</artifactId>开始到对应</plugin>的所有配置内容
  2. 执行mvn clean package重新打包
  3. 直接运行官方插件生成的Jar即可:java -jar target/cache-maven-0.0.0.jar

如果确实有特殊场景必须使用assembly插件打包,你需要额外自定义assembly的描述符,完全对齐Spring Boot的Jar结构规范,配置复杂度很高,常规场景下完全不推荐,直接使用Spring官方提供的打包插件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:09:02