Maven构建Spring Boot可执行jar报No auto configuration classes错误如何解决
Spring Boot打包报错解决方案
问题根因
报错java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories的核心原因是Maven打包时未使用Spring Boot官方指定的打包插件,生成的jar为普通Java jar包,缺少Spring Boot可执行jar所需的自动配置元信息、依赖包以及启动入口配置。
解决步骤
1. 补充Spring Boot打包插件配置
在pom.xml的<build><plugins>节点下添加如下配置:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin>
如果你的项目没有继承spring-boot-starter-parent,需要额外指定插件版本(和你使用的Spring Boot版本保持一致),同时显式声明启动主类:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>替换为你的Spring Boot版本号</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> <configuration> <mainClass>替换为你的启动主类全限定名,例如com.example.demo.DemoApplication</mainClass> </configuration> </plugin>
2. 执行正确的打包命令
在项目根目录(pom.xml所在目录)执行命令:mvn clean package
不要使用IDEA自带的Build Artifact功能生成jar,该方式默认不会整合Spring Boot的打包规则。
3. 运行生成的可执行jar
打包完成后进入target目录,选择大小为几十MB、包含所有依赖的jar包执行启动命令即可:java -jar 替换为你的jar包名称.jar
常见排查点
- 启动主类上必须添加
@SpringBootApplication注解,不要遗漏 - 不要同时配置多个自定义打包规则(例如冗余的maven-jar-plugin配置),避免覆盖Spring Boot插件的打包结果
- 打包前清理本地target目录的历史文件,避免缓存导致的配置不生效问题
内容的提问来源于stack exchange,提问作者Nick Roach
相关产品推荐
相关产品推荐

