Spring Boot应用主类打包成jar后无法识别该如何解决
问题排查及解决方案
1. 命令执行错误
你当前使用的maven clean > maven package是错误命令:>是系统重定向符号,会将maven clean的执行结果输出到名为maven package的文件中,而非执行package打包动作。
正确的打包命令应为:
mvn clean package
2. Spring Boot Maven插件配置缺失
标准的可执行Jar打包插件需要配置执行目标,正确配置参考如下:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!-- 可选:显式指定主类,无特殊路径需求可省略,插件会自动扫描带@SpringBootApplication的类 --> <configuration> <mainClass>com.xxx.你的主类全限定名</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
如果缺少<executions>段的repackage目标配置,maven打包生成的是普通jar而非Spring Boot可执行jar,内置没有主类声明和依赖加载结构,运行时就会报主类无法识别的错误。
3. 主类配置校验
- 确认你的启动主类上添加了
@SpringBootApplication注解 - 如果主类不在默认的根包路径下,需要在插件配置的
<mainClass>标签中显式填写主类的全限定名,也可以在pom.xml的<properties>段添加<start-class>com.xxx.主类全限定名</start-class>声明。
修改完成后重新执行正确的打包命令,再运行生成的jar即可。
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

