【问题标题】:How to deploy java gradle application on Heroku如何在 Heroku 上部署 java gradle 应用程序
【发布时间】:2016-11-25 17:11:47
【问题描述】:

请帮助我在 Heroku 上部署我的应用程序。 从 Heroku 获取错误消息 *

“应用程序错误。应用程序和您的页面发生错误 无法送达。请稍后重试。如果你是 应用程序所有者,请查看您的日志以了解详细信息。”

这里是 Heroku 的日志:

2016-07-21T22:11:30.966800+00:00 heroku[slug-compiler]: Slug compilation 
started 2016-07-21T22:11:30.773385+00:00 heroku[api]: Release v8 created by 
zzheads@gmail.com 2016-07-21T22:11:56.184847+00:00 heroku[router]: at=error 
code=H14 desc="No web processes running" method=GET path="/favicon.ico" 
host=zzheads-countries.herokuapp.com request_id=a03c9276-b038-4f9f-8e6d-
5f29f14b441 fwd="5.3.141.153" dyno= connect= service= status=503 bytes=

我的 gradle 构建文件:

group 'com.zzheads'
version '1.0-SNAPSHOT'

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath  'org.springframework.boot:spring-boot-gradle-plugin:1.3.6.RELEASE'
    }
}

apply plugin: 'java'
apply plugin: 'spring-boot'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-thymeleaf")
}

task stage {
    dependsOn build
}

还有我的 Proc 文件:

web: java -Dserver.port=$PORT $JAVA_OPTS -jar target/countries-1.0-SNAPSHOT.jar

【问题讨论】:

  • 如何在本地运行您的应用程序?
  • 从 IntellyJ IDEA IDE 中,只需点击 Run 'countries [bootRun]' ..

标签: java heroku gradle web-deployment procfile


【解决方案1】:

您的构建可能会在目录build/libs 中生成一个可执行的JAR 文件。在您的Procfile 中试试这个:

web: java -Dserver.port=$PORT $JAVA_OPTS -jar build/libs/countries-1.0-SNAPSHOT.jar

你可以通过运行在本地测试它:

$ ./gradlew stage
$ heroku local

【讨论】:

  • 同样的错误信息,同样的日志。尝试在本地测试它: E:\Projects\countries>gradlew stage :clean :compileJava :processResources :classes :jar :findMainClass :startScripts :installApp installApp 任务已被弃用,并计划在 Gradle 3.0 中删除。请改用 installDist 任务。 :stage BUILD SUCCESSFUL Total time: 5.13 secs E:\Projects\countries>heroku local [WARN] No ENV file found 12:04:46 web.1 |错误:无法找到或加载主类 $JAVA_OPTS [DONE] 使用信号 null 12:04:46 web.1 以退出代码 1 退出的所有进程
  • $JAVA_OPTS 的错误是因为你在windows上。您需要使用 Windows 格式的命令创建 Procfile.windows 并运行 heroku local -f Procfile.windows
  • 你在 Heroku 上试过了吗?您可能必须运行 heroku ps:scale web=1 才能启动应用程序,因为它已经崩溃了。
  • 是的,我已经在 Heroku 上尝试过,如上所述。得到相同的错误,相同的日志。我如何在本地测试它? gradlew 阶段 -> 构建成功,但“heroku local”运行时出现错误
【解决方案2】:

我认为 Heroku 无法找到您的.jar,因为当它找不到版本属性时,gradle buildpack 只是使用自己的构建 ID。所以你的.jar 在你的procfile 的文件名下找不到。您可以设置以下内容:

jar{
  baseName = 'countries-'
  version = '1.0-SNAPSHOT'
} 

所以 Heroku 选择了这些变量。请注意,如果您使用的是 Spring Boot 2.*,插件会禁用 jar 任务,并添加一个 bootJar 任务,然后您必须将这些任务设置为变量。

这样,平台应该能够很好地找到您的工件。

此外,运行heroku logs -a <your-app-name-here> -t,您将在调试时获得有关应用状态的更多信息

【讨论】:

    猜你喜欢
    • 2016-10-01
    • 2015-02-27
    • 2017-05-26
    • 2020-07-03
    • 1970-01-01
    • 2023-03-27
    • 2013-02-01
    • 2020-07-14
    • 2011-12-08
    相关资源
    最近更新 更多