Maven打包Spring Boot项目运行jar提示找不到主类jar如何解决
问题根因与解决方案
根因定位
- 第一个核心问题:你在
spring-boot-maven-plugin的repackage配置中加了<classifier>spring-boot</classifier>参数,该参数会让maven打包后生成两个jar包:- 后缀不带标识的普通jar包:也就是你现在启动的
fb-0.0.1-snapshot.jar,仅包含项目编译后的业务代码,没有嵌套依赖、也没有配置主类入口,不属于可执行jar,启动时就会触发找不到主类的报错 - 带
spring-boot标识的可执行jar包:名称为fb-0.0.1-snapshot-spring-boot.jar,才是可以直接用java -jar启动的包
- 后缀不带标识的普通jar包:也就是你现在启动的
- 第二个配置错误:你重复声明了两次
spring-boot-maven-plugin,两处配置会互相覆盖,很容易导致配置失效。
修正配置
将pom.xml中的build部分替换为合并后的统一配置即可:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> <configuration> <!-- 如果你不需要同时保留普通jar和可执行jar,直接删除classifier配置即可,打包生成的fb-0.0.1-snapshot.jar就是可执行包 --> <!-- <classifier>spring-boot</classifier> --> <mainClass>com.bob.fb.MainApplication</mainClass> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </execution> </executions> </plugin> </plugins> </build>
操作步骤
- 更新pom配置后,重新执行
mvn clean install - 如果你保留了
classifier配置,执行java -jar fb-0.0.1-snapshot-spring-boot.jar启动;如果删除了classifier配置,执行java -jar fb-0.0.1-snapshot.jar即可正常启动。
内容的提问来源于stack exchange,提问作者tcho1506996
相关产品推荐
相关产品推荐

