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

Heroku上Spring Boot Worker进程找不到主类问题求助

解决Heroku Worker Dyno找不到Spring Boot主类的问题

核心原因

Spring Boot默认打包的可执行Jar类加载路径与普通Jar不同,直接指定主类运行会出现类找不到的情况;另外可能存在类未被正确编译/打包、Procfile命令配置错误等问题。

具体解决方案

  • 确认类的编译与路径正确性

    1. 检查BrandNewClass.java的包声明package com.whatever.externalsystem.business;和文件物理路径是否一致(需对应src/main/java/com/whatever/externalsystem/business/BrandNewClass.java)
    2. 本地执行mvn clean compile后,查看target/classes目录下是否生成com/whatever/externalsystem/business/BrandNewClass.class文件,若不存在,说明Maven编译未包含该类,需检查pom.xml的编译范围配置
  • 调整Spring Boot打包插件配置
    在pom.xml的spring-boot-maven-plugin中明确主类(或允许运行时指定),确保打包时包含该类的入口信息:

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!-- 若需支持多个主类,可注释此行,运行时通过命令指定 -->
                    <mainClass>com.whatever.externalsystem.business.BrandNewClass</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
  • 修正Procfile的Worker命令
    根据打包方式选择正确的启动命令:

    1. 使用Spring Boot可执行Jar启动(推荐):
      worker: java -jar target/[你的项目Jar包名].jar com.whatever.externalsystem.business.BrandNewClass
      
      替换[你的项目Jar包名]为target目录下实际生成的Jar文件名
    2. 直接通过Classpath启动:
      worker: java -cp target/classes:target/dependency/* com.whatever.externalsystem.business.BrandNewClass
      
      此方式依赖Heroku Maven插件将依赖包下载到target/dependency目录
  • 本地预验证
    在本地执行对应的Worker启动命令,确认能正常运行后再部署到Heroku,减少重复调试:

    java -jar target/[你的项目Jar包名].jar com.whatever.externalsystem.business.BrandNewClass
    
  • 排查Heroku部署日志
    部署后通过命令查看详细日志,定位编译或打包异常:

    heroku logs --tail --app [你的Heroku应用名]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 11:07:32