Heroku 503错误

时间:2017-02-17 16:16:33

标签: java heroku gradle

Heroku崩溃,没有直接的错误消息。这是日志:

2017-02-20T18:27:08.194304+00:00 app[web.1]: Hello World
2017-02-20T18:27:08.512366+00:00 heroku[web.1]: State changed from starting to crashed
2017-02-20T18:27:08.489335+00:00 heroku[web.1]: Process exited with status 0
2017-02-20T18:27:09.590397+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=x.herokuapp.com request_id=59533920-38d9-426f-a7e0-c32d667b8d49 fwd="94.187.7.67" dyno= connect= service= status=503 bytes=
2017-02-20T18:27:10.538493+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=x.herokuapp.com request_id=30fdd320-7ea6-4eb5-b3fa-8cf8c4240a21 fwd="94.187.7.67" dyno= connect= service= status=503 bytes=

heroku logs -n 1000没有任何变化 这是我的代码:

public class Main {

public static void main(String[] args){
    System.out.println("Hello World");
  }

}

Procfile:

web: java -jar build/libs/app-name-1.0-SNAPSHOT.jar

的build.gradle:

version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.5

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.4'
    }
}

repositories {
    mavenCentral()
}

task stage(dependsOn: ['build', 'clean'])
build.mustRunAfter clean

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

jar {
    manifest {
        attributes(
                'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
                'Main-Class': com.mypackage.Main
        )
    }
}
apply plugin: 'com.github.johnrengelman.shadow'

我可以看到正在打印Hello World。但是之后为什么会崩溃呢?

我正在使用带有IntelliJ IDEA的Gradle

1 个答案:

答案 0 :(得分:3)

这里的问题是应用程序不是Web应用程序。

考虑Procfile

的内容
web: java -jar build/libs/app-name-1.0-SNAPSHOT.jar

第一个单词是web,它向Heroku建议您尝试部署Web应用程序。但根据其代码,应用程序不是Web应用程序:

public class Main {

    public static void main(String[] args){
        System.out.println("Hello World");
    }

}

应用程序不运行任何等待80或8080端口上的HTTP连接的Web服务器。应用程序只是将“Hello World”打印到标准输出并退出(因为程序结束了)。

2017-02-20T18:27:08.489335+00:00 heroku[web.1]: Process exited with status 0

Web应用程序可以等待连接。除非人类阻止它,否则它不能到达终点。

您可以使用this generator生成Web应用程序的模板。该应用程序将使用嵌入式apache tomcat(将充当应用程序的Web服务器)和spring-boot来引导Web应用程序基础结构。 Here是关于如何在spring-boot上编写Hello World应用程序的简短教程。它在Heroku上部署和工作。