Spring Boot嵌入式Tomcat应用运行报错:主类无法找到或加载
解决Spring Boot Kotlin应用bootJar打包后主类找不到问题
问题核心原因
Kotlin的顶层main函数会被编译成带Kt后缀的类(比如你的代码里生成的是DemoApplicationKt),而你当前配置的主类是DemoApplication——这个类本身没有main方法,实际的入口方法在DemoApplicationKt中。
具体解决步骤
1. 修正Spring Boot主类配置
修改build.gradle.kts中的springBoot配置,将主类指向带Kt后缀的类:
springBoot { mainClass.set("com.planes.planesserver.DemoApplicationKt") }
2. 移除自定义的Jar任务配置
你自定义的tasks.withType<Jar>会干扰Spring Boot的bootJar任务生成正确的Manifest信息,直接删除这段配置:
// 删除以下内容 tasks.withType<Jar> { duplicatesStrategy = DuplicatesStrategy.EXCLUDE manifest { attributes["Main-Class"] = "com.planes.planesserver.DemoApplication" } }
bootJar任务会自动处理主类和Manifest,无需额外配置。
3. 验证与测试
- 先执行本地运行命令测试:
./gradlew bootRun,确认应用能正常启动 - 重新打包:
./gradlew bootJar - 运行Jar包:
java -jar build/libs/planesserver-0.0.1-SNAPSHOT.war(注意你的包是war类型,文件名对应配置的group和version)
额外说明
如果你的应用以war包部署,也可以直接用bootWar任务打包,同样确保主类配置正确即可。
内容的提问来源于stack exchange,提问作者Cristi
相关产品推荐
相关产品推荐

