You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot+Kotlin+Gradle部署Heroku提示Main方法未找到如何解决?

问题核心原因

  1. Kotlin中定义在文件顶层的main函数,编译后会生成在「文件名+Kt后缀」的类中,你当前配置的主类com.markoid.packit.PackitApplication是注解标注的启动类,不是包含main方法的实际类,正确主类名应为com.markoid.packit.PackitApplicationKt
  2. 你配置的是普通Jar任务的Manifest属性,但Spring Boot Gradle插件默认使用bootJar任务构建可执行部署包,普通Jar任务的配置不会生效

解决步骤

  • 第一步:删除build.gradle.kts中原来的tasks.withType<Jar>相关配置,替换为下面任意一种配置即可:
    方案A:直接配置Spring Boot全局主类
    springBoot {
        mainClass.set("com.markoid.packit.PackitApplicationKt")
    }
    
    方案B:单独配置bootJar任务的Manifest
    tasks.getByName<org.springframework.boot.gradle.tasks.bundling.BootJar>("bootJar") {
        mainClass.set("com.markoid.packit.PackitApplicationKt")
    }
    
  • 第二步:在项目根目录新建名为Procfile的文件(无后缀名),写入以下启动命令,适配Heroku的端口规则和部署路径:
    web: java -Dserver.port=$PORT $JAVA_OPTS -jar build/libs/*.jar
    
  • 第三步:本地验证打包是否正常,执行./gradlew bootJar命令构建包,再执行java -jar build/libs/生成的jar包名称.jar,确认本地可以正常启动后,重新推送到Heroku部署即可。

内容的提问来源于stack exchange,提问作者knockmark10

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 22:12:00