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.
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
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. –
Existiert die JAR-Datei lokal, wenn Sie './gradlew clean stage' ausführen? – codefinger