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

Spring Boot+PostgreSQL部署Heroku遇503(H10)崩溃问题求助

解决Heroku部署Spring Boot应用出现H10(App crashed)错误的方案

针对部署后应用崩溃、返回503错误的问题,结合提供的配置,可从以下几个方向排查修复:

1. 修复system.properties的错误配置

当前system.properties里的PORT=process.env.port || 8080是Node.js语法,Java环境无法识别。Heroku会自动注入PORT环境变量,Procfile中已通过-Dserver.port=$PORT读取该变量,因此删除这行错误配置,保留正确的Java版本配置即可:

java.runtime.version=17.0.4

2. 验证Procfile的准确性

确认Procfile中指定的jar包路径和名称与实际打包产物完全一致:

  • 执行mvn clean package(Maven)或./gradlew build(Gradle)完成打包后,检查target目录下是否存在spring-boot-info-earth-0.0.1-SNAPSHOT.jar
  • 若jar包名称有误(如SNAPSHOT拼写错误、版本号不一致),修正Procfile中的对应内容:
    web: java -Dserver.port=$PORT $JAVA_OPTS -jar target/[正确的jar包名称].jar
    

3. 确认数据库连接配置适配Heroku环境

虽然本地数据库连接正常,但Heroku上的PostgreSQL需通过其提供的DATABASE_URL环境变量配置:

  • 在application.properties中添加以下配置(Spring Boot会自动解析DATABASE_URL中的用户名、密码、地址信息):
    spring.datasource.url=${DATABASE_URL}
    spring.datasource.driver-class-name=org.postgresql.Driver
    spring.jpa.hibernate.ddl-auto=update # 根据自身需求调整
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
    
  • 确保pom.xml中包含适配Java 17的PostgreSQL驱动依赖:
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <scope>runtime</scope>
    </dependency>
    

4. 查看详细崩溃日志定位根因

H10错误仅表明应用崩溃,需通过Heroku日志获取具体异常信息:

  • 使用Heroku CLI执行命令:
    heroku logs --tail
    
    重点关注应用启动时的报错,比如类缺失、数据库连接失败、端口绑定冲突等,这些信息是精准修复的关键。

5. 验证本地打包产物的可用性

在本地直接运行打包后的jar包,排除打包过程中的问题:

java -jar target/spring-boot-info-earth-0.0.1-SNAPSHOT.jar --server.port=8080

若本地运行失败,先修复本地打包或代码问题后再重新部署。

内容的提问来源于stack exchange,提问作者Selimhan Baltaş

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 08:48:21