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

Java REST API部署到Heroku后接口无法访问,本地Tomcat运行正常

排查解决步骤

  • 核对请求路径的上下文前缀
    本地Tomcat部署时默认将war包名称作为上下文路径(如war包名为messenger.war则路径前缀为/messenger),但Heroku使用webapp-runner默认将应用部署在根上下文,无额外前缀。你可以先尝试去掉路径中的/messenger段,直接请求mixas-messenger.herokuapp.com/webapi/myresource验证是否可正常访问。
    如果需要保留/messenger前缀,修改Procfile配置,新增--path参数指定上下文路径:
    web: java $JAVA_OPTS -jar target/dependency/webapp-runner.jar --port $PORT --path /messenger target/*.war
    
  • 验证依赖打包配置
    检查pom.xml中Jersey相关依赖的scope配置,不要设置为provided。本地Tomcat自带Jersey相关API包,但webapp-runner不会内置这些依赖,scope设为provided会导致依赖不会打入最终war包,运行时类缺失导致404错误。
  • 本地复现webapp-runner运行效果
    本地执行mvn clean package完成打包后,在本地直接运行Procfile中的启动命令(将$PORT替换为本地端口如8080),模拟Heroku的运行环境测试接口是否可正常访问,可快速定位是打包配置问题还是Heroku平台的配置问题。
  • 检查包扫描配置
    确认web.xml中Jersey Servlet的jersey.config.server.provider.packages参数值,和你的资源类所在包路径完全匹配,确保服务启动时可以扫描到资源类注册接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:12:02