2017-02-23 1 views
8

ich meine Hauptklasse haben:Heroku Java-Anwendung lokal, aber nicht auf dem Web-Absturz

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) 
    } 

} 

Mein procfile:

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

Hinweis: ich shadowJar da eine normale jar Schaffung bin mit enthält keine Abhängigkeiten wie Spark und Firebase.

Nun, wenn ich tun:

heroku local web 

Und gehen Sie zu localhost:5000, bekomme ich einen 404-Fehler. Die Anwendung stürzt jedoch nicht ab. Es läuft weiter.

, dass im Gegensatz ist, wenn ich tun:

heroku open 

Nach einem git add ., git commit -m "x" und ein git push heroku master

, die mit einem "Application Error" stürzt ab und gibt mir diese NUR:

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= 

Das sind die einzigen Fehler, die ich bekam. Die vorherigen Fehler sind die Protokolle von gestern.

Ich bin nicht genau sicher, was das Problem ist. Ich vermute, dass es etwas mit der shadowJar zu tun hat. Aber ich bin mir nicht sicher.

+0

Können Sie versuchen, 'Heroku Logs -t' laufen zu lassen und es laufen zu lassen. Führen Sie dann in einer anderen Terminal-Sitzung 'heroku ps: restart' aus? Wenn Sie eine Fehlermeldung sehen, fügen Sie sie hier hinzu. – codefinger

+0

Anscheinend wird meine Jar-Datei (my-app-name-snapshot-1.0-all.jar) nicht in heroku bereitgestellt. Was ich verifiziert habe mit 'heroku run ls build/libs /'. Die reguläre JAR-Datei wird jedoch bereitgestellt. Aber die reguläre JAR-Datei enthält aus irgendeinem Grund nicht die Abhängigkeiten von Gradle, und ich kann Spark nicht verwenden, wenn ich das reguläre Jar verwende. –

+0

Existiert die JAR-Datei lokal, wenn Sie './gradlew clean stage' ausführen? – codefinger

Antwort

3

Ich habe herausgefunden, was das Problem ist. Ich musste meine Build-Methode von gradlew clean stage bei der Bereitstellung zu Heroku mit git push Heroku master zu gradlew shadowJar ändern.

Wie ich habe es in der Dokumentation erwähnt wird:

Heroku config:set GRADLE_TASK="shadowJar" 

Nun, um jedes Mal ein git push Heroku master zu tun, ist es nicht gradlew clean stage läuft, aber gradlew shadowJar, die ich Abhängigkeiten in mein Java-Web verwenden, um umfassen Anwendung.

Verwandte Themen