Heroku的Java应用程序的网络

问题描述:

我有我的主类在本地,但没有崩溃:Heroku的Java应用程序的网络

public class Main { 

    public static void main(String[] args){ 
     Spark.port(getHerokuAssignedPort()); 
     get("/hello", (req, res) -> "Hello Heroku World"); 
    } 



    private static int getHerokuAssignedPort() { 
     ProcessBuilder processBuilder = new ProcessBuilder(); 
     if (processBuilder.environment().get("PORT") != null) { 
      return Integer.parseInt(processBuilder.environment().get("PORT")); 
     } 
     return 4567; //return default port if heroku-port isn't set (i.e. on localhost) 
    } 

} 

我procfile:

web: java -jar build/libs/CrowdSubhaHeroku-1.0-SNAPSHOT-all.jar 

注:我使用shadowJar因为一个正常的罐子创作不包括我需要的依赖关系,例如Spark和Firebase。现在

,如果我这样做:

heroku local web 

,并转到localhost:5000,我得到一个404错误。但是,应用程序实际上并没有崩溃。它保持运行。

当我做这不同于:

heroku open 

一个git add .git commit -m "x"后,和git push heroku master

与一个 “应用程序错误” 崩溃,并给了我这个ONLY

2017-02-23T15:18:18.848727+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=crowdsubha.herokuapp.com request_id=ce636951-862e-4b2f-a698-924db3039a07 fwd="94.187.7.67" dyno= connect= service= status=503 bytes= 
2017-02-23T15:18:20.022743+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=myapp.herokuapp.com request_id=d1e9ec86-ffe4-4a09-9934-81e25378c32c fwd="94.187.7.67" dyno= connect= service= status=503 bytes= 

这些是我得到的唯一的错误。以前的错误是来自昨天的日志。

我不完全确定是什么问题。我怀疑它与shadowJar有关。但我不确定。

+0

你可以尝试运行'heroku logs -t'并让它运行。然后在另一个终端会话中运行'heroku ps:restart'?如果您看到错误讯息,请在此处添加。 – codefinger

+0

显然,我的jar文件(my-app-name-snapshot-1.0-all.jar)没有被部署到heroku。我使用'heroku运行ls build/libs /'来验证。但是,正在部署常规jar文件。但是由于某些原因,常规jar文件不包含gradle依赖关系,并且如果我使用常规jar,则不能使用Spark –

+0

运行'./gradlew clean stage'时,jar文件是否存在于本地? – codefinger

我发现了什么问题。部署到Heroku时,必须将gradlew clean stage中的构建方法更改为git push Heroku mastergradlew shadowJar

我怎么做的是在文档中提到:现在

Heroku config:set GRADLE_TASK="shadowJar" 

,每次做git push Heroku master,它不运行gradlew clean stage,但gradlew shadowJar,我用它来包括依赖关系到我的Java Web应用。