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
有关。但我不确定。
答
我发现了什么问题。部署到Heroku时,必须将gradlew clean stage
中的构建方法更改为git push Heroku master
至gradlew shadowJar
。
我怎么做的是在文档中提到:现在
Heroku config:set GRADLE_TASK="shadowJar"
,每次做git push Heroku master
,它不运行gradlew clean stage
,但gradlew shadowJar
,我用它来包括依赖关系到我的Java Web应用。
你可以尝试运行'heroku logs -t'并让它运行。然后在另一个终端会话中运行'heroku ps:restart'?如果您看到错误讯息,请在此处添加。 – codefinger
显然,我的jar文件(my-app-name-snapshot-1.0-all.jar)没有被部署到heroku。我使用'heroku运行ls build/libs /'来验证。但是,正在部署常规jar文件。但是由于某些原因,常规jar文件不包含gradle依赖关系,并且如果我使用常规jar,则不能使用Spark –
运行'./gradlew clean stage'时,jar文件是否存在于本地? – codefinger