2015-09-09 153 views
3

我試圖將我的Java Spring Boot Web應用程序部署到Heroku。Heroku上的Java Web應用程序:無法訪問jarfile

要在本地啓動它,我跑:

mvn install

然後

java $JAVA_OPTS -jar target/*.war

所以對於我的Heroku已經創建了Procfile: web: java $JAVA_OPTS -jar target/*.war

我用的Heroku Github集成和應用程序部署到Heroku來自Github。所以我只是把它推到那裏。

但該應用程序不啓動。

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 myappls -a不顯示target目錄。

我認爲Heroku不會構建應用程序。 但是我做錯了什麼?在此先感謝您的建議!

+1

當你說「應用程序從Github部署到Heroku,所以我只是推它」這是否意味着你正在使用[Heroku GitHub集成](https://devcenter.heroku.com/articles/github-integration) ?你能否檢查你的[Heroku儀表板](http://dashboard.heroku.com)以確認部署是成功的? – codefinger

+0

@codefinger感謝您的評論,構建日誌是正確的方向。 – Nailgun

回答

3

我找到了錯誤的原因。這是生成日誌的一部分:

-----> 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的build order應用被認爲是一個的NodeJS。因此,解決方案是設置Java構建包:

heroku buildpacks:set https://github.com/heroku/heroku-buildpack-java 

然後將任何更改推送到應用程序,使其重建。

5

而不是mvn installmvn 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

關於部署春季啓動,也有采取一些步驟:

  • 配置端口

    web: java -Dserver.port=$PORT -jar target/demo-0.0.1-SNAPSHOT.jar

  • 指定JDK,默認1.8(不需要改變,如果1。8 Maven中指定)

檢查http://docs.spring.io/spring-boot/docs/current/reference/html/cloud-deployment-heroku.html

要執行Procfile使用heroku local

+0

感謝您的回覆。我知道Maven Heroku插件,但我希望通過其Github集成來使用Heroku。另外我相信maven'install'步驟是在'package'後面調用的,並且結果(構建的war文件)是相同的,所以沒關係。 – Nailgun

相關問題