Heroku Java 应用程序在本地崩溃但在网络上没有
Heroku Java app crashing locally but not on the web
我有我的主class:
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)
}
}
我的过程文件:
web: java -jar build/libs/CrowdSubhaHeroku-1.0-SNAPSHOT-all.jar
注意:我正在使用 shadowJar,因为普通的 jar 创建不包括我需要的依赖项,例如 Spark 和 Firebase。
现在,如果我这样做:
heroku local web
然后转到 localhost:5000
,我收到 404 错误。但是,应用程序实际上并没有崩溃。它保持 运行.
这和我做的不一样:
heroku open
在 git add .
、git commit -m "x"
和 git push heroku master
之后
它与 "Application Error" 一起崩溃并给我这个 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
有关。但我不确定。
我发现了问题所在。当使用 git push Heroku master
部署到 Heroku 时,我不得不将构建方法从 gradlew clean stage
更改为 gradlew shadowJar
。
文档中提到了我是如何做到的:
Heroku config:set GRADLE_TASK="shadowJar"
现在,每次做 git push Heroku master
,它不是 运行 gradlew clean stage
,而是 gradlew shadowJar
,我用它来将依赖项包含到我的 Java 网络应用程序。
我有我的主class:
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)
}
}
我的过程文件:
web: java -jar build/libs/CrowdSubhaHeroku-1.0-SNAPSHOT-all.jar
注意:我正在使用 shadowJar,因为普通的 jar 创建不包括我需要的依赖项,例如 Spark 和 Firebase。
现在,如果我这样做:
heroku local web
然后转到 localhost:5000
,我收到 404 错误。但是,应用程序实际上并没有崩溃。它保持 运行.
这和我做的不一样:
heroku open
在 git add .
、git commit -m "x"
和 git push heroku master
它与 "Application Error" 一起崩溃并给我这个 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
有关。但我不确定。
我发现了问题所在。当使用 git push Heroku master
部署到 Heroku 时,我不得不将构建方法从 gradlew clean stage
更改为 gradlew shadowJar
。
文档中提到了我是如何做到的:
Heroku config:set GRADLE_TASK="shadowJar"
现在,每次做 git push Heroku master
,它不是 运行 gradlew clean stage
,而是 gradlew shadowJar
,我用它来将依赖项包含到我的 Java 网络应用程序。