Spring Boot Gradle项目打包后无法找到主类com.Application求助
Spring Boot Gradle Jar包启动找不到主类问题解决
核心问题定位
本地通过Gradle运行正常,但生成的Jar包(不管是本地java -jar执行还是部署到Heroku/GCP)启动时报错Error: Could not find or load main class com.Application,本质是Jar包未正确包含主类信息,或者主类配置存在错误。
排查与修复步骤
1. 检查build.gradle配置
确保Spring Boot插件正确引入,并且主类配置无误。示例正确配置片段:
plugins { id 'org.springframework.boot' version '3.2.0' id 'io.spring.dependency-management' version '1.1.4' id 'java' } // 明确指定主类,避免插件自动识别失败 springBoot { mainClass = 'com.Application' }
如果使用新版Spring Boot插件(2.4+),也可以通过application.properties配置:
spring.main.application-class=com.Application
2. 验证主类本身
- 确认
com.Application类存在,包路径严格匹配(比如不要写成com.example.Application) - 主类必须包含
@SpringBootApplication注解和标准main方法:
package com; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
3. 重新构建并检查Jar包内容
- 执行清理构建命令:
./gradlew clean bootJar(Linux/Mac)或gradlew clean bootJar(Windows) - 解压
build/libs下的Jar包,确认BOOT-INF/classes/com/Application.class存在 - 查看
META-INF/MANIFEST.MF文件,确保包含以下条目:
Main-Class: org.springframework.boot.loader.launch.JarLauncher
Start-Class: com.Application
如果Start-Class不是com.Application,说明主类配置未生效。
4. 云环境部署额外检查
- Heroku/GCP构建时,确保执行了
bootJar任务(默认Gradle构建会自动执行,但自定义脚本需确认) - 启动命令要指向正确的Jar包路径,比如
java -jar build/libs/[你的项目名].jar
内容的提问来源于stack exchange,提问作者Daniel A.
相关产品推荐
相关产品推荐

