Mam główne klasy:aplikacja Heroku Java upaść lokalnie, ale nie w sieci
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)
}
}
Moja procfile:
web: java -jar build/libs/CrowdSubhaHeroku-1.0-SNAPSHOT-all.jar
Uwaga: Używam shadowJar od normalnego tworzenia słoik nie obejmuje zależności, których potrzebuję, takich jak Spark i Firebase.
Teraz, jeśli zrobić:
heroku local web
i przejdź do localhost:5000
, pojawia się błąd 404. Jednak aplikacja faktycznie nie ulega awarii. Pozostaje uruchomiony.
To przeciwieństwie kiedy zrobić:
heroku open
Po git add .
, git commit -m "x"
i git push heroku master
Które wywala z "Application Error" i daje mi to TYLKO:
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=
To są jedyne błędy, które dostałem. Poprzednie błędy to dzienniki z wczoraj.
Nie jestem do końca pewien, na czym polega problem. Podejrzewam, że ma to coś wspólnego z shadowJar
. Ale nie jestem pewien.
Czy możesz spróbować uruchomić 'heroku logs -t' i pozostawić go uruchomionym. Następnie w innej sesji terminalowej uruchom 'heroku ps: restart'? Jeśli zobaczysz komunikat o błędzie, dodaj go tutaj. – codefinger
Wygląda na to, że mój plik Jar (my-app-name-snapshot-1.0-all.jar) nie jest wdrażany w heroku. Które zweryfikowałem używając 'heroku run ls build/libs /'. Jednak wdrażany jest zwykły plik jar. Ale zwykły plik jar nie zawiera zależności gradle z jakiegoś powodu i nie mogę używać Sparka, jeśli używam zwykłego słoika. –
Czy plik JAR istnieje lokalnie po uruchomieniu './gradlew clean stage'? – codefinger