![](/img/trans.png)
[英]Heroku Java WAR app that was working now failing: “Unable to access jarfile webapp-runner-7.0.40.0.jar”
[英]Java web app on Heroku: Unable to access jarfile
我正在尝试将我的 Java Spring Boot Web 应用程序部署到 Heroku。
要在本地启动它,我运行:
mvn install
进而
java $JAVA_OPTS -jar target/*.war
所以对于 Heroku,我创建了 Procfile: web: java $JAVA_OPTS -jar target/*.war
我使用 Heroku Github 集成,并将应用程序从 Github 部署到 Heroku。 所以我只是把它推到那里。
但是应用程序没有启动。
heroku logs --app myapp
给我:
2015-09-09T21:53:25.581128+00:00 heroku[web.1]: Starting process with command `java $JAVA_OPTS -jar target/*.war`
2015-09-09T21:53:27.110820+00:00 app[web.1]: Error: Unable to access jarfile target/*.war`
heroku run bash --app myapp
with ls -a
不显示target
目录。
我认为 Heroku 不会构建应用程序。 但我做错了什么? 在此先感谢您的建议!
而不是mvn install
做mvn package
以了解差异检查http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
使用 Heroku Maven 插件部署 WAR 文件允许您将部署过程与现有的 Maven 过程集成。 Heroku 插件使用 mvn 包阶段生成的工件,并将它们构建到上传到 Heroku 服务器的 Slug 文件中。
通过这种方式,Heroku Maven 插件避免了远程重新编译项目的开销。 从 CI 服务器进行部署时,这通常是首选方法,它可能已经构建了您的 WAR 文件并对其进行了测试。
来源: https : //devcenter.heroku.com/articles/war-deployment#deployment-with-the-heroku-maven-plugin
关于部署Spring Boot,有一些步骤需要采取:
配置端口
web: java -Dserver.port=$PORT -jar target/demo-0.0.1-SNAPSHOT.jar
指定JDK,默认为1.8(如果Maven指定为1.8则无需更改)
检查http://docs.spring.io/spring-boot/docs/current/reference/html/cloud-deployment-heroku.html
要执行 Procfile 使用heroku local
我找到了错误的原因。 这是构建日志的一部分:
-----> Warning: Multiple default buildpacks reported the ability to handle this app. The first buildpack in the list below will be used.
Detected buildpacks: Node.js, Java
See https://devcenter.heroku.com/articles/buildpacks#buildpack-detect-order
-----> Node.js app detected
-----> Creating runtime environment
根据 Heroku 构建顺序,该应用程序被视为 NodeJS 之一。 所以解决方案是设置java build pack:
heroku buildpacks:set https://github.com/heroku/heroku-buildpack-java
然后将任何更改推送到应用程序以使其重建。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.