简体   繁体   English

heroku无法选择gradle-wrapper和正确的Java版本

[英]heroku fails to pick gradle-wrapper and correct java version

I have added system.properties with java.runtime.version=1.7 and created an application in heroku to run a spring mvc war file using jetty 我使用java.runtime.version=1.7添加了system.properties并在heroku中创建了一个应用程序,以使用码头运行spring mvc war文件

anadi$ heroku apps:create gogreen
Creating gogreen... done, stack is cedar
http://gogreen.herokuapp.com/ | git@heroku.com:gogreen.git
Git remote heroku added

anadi$ cat system.properties 
java.runtime.version=1.7

anadi$ cat Procfile 
web: java $JAVA_OPTS -jar build/libs/jetty-runner.jar --port $PORT build/libs/*.war

git shows files added to index git显示添加到索引的文件

anadi$ git ls-files gradle/
gradle/wrapper/gradle-wrapper.jar
gradle/wrapper/gradle-wrapper.properties

however deployment fails 但是部署失败

  1. Heroku does not pick correct JDK version Heroku没有选择正确的JDK版本
  2. Heroku does not find the Gradle Main class Heroku找不到Gradle Main类

here's the error log from heroku 这是来自heroku的错误日志

anadi$ git push heroku master
Initializing repository, done.
Counting objects: 368, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (178/178), done.
Writing objects: 100% (368/368), 192.45 KiB | 52.00 KiB/s, done.
Total 368 (delta 148), reused 353 (delta 140)

-----> Gradle app detected
-----> Installing OpenJDK 1.6... done
-----> Building Gradle app...
       WARNING: The Gradle buildpack is currently in Beta.
-----> executing ./gradlew stage
       Exception in thread "main" java.lang.NoClassDefFoundError: org/gradle/wrapper/GradleWrapperMain
       Caused by: java.lang.ClassNotFoundException: org.gradle.wrapper.GradleWrapperMain
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
       Could not find the main class: org.gradle.wrapper.GradleWrapperMain. Program will exit.
 !     Failed to build app

 !     Push rejected, failed to compile Gradle app

To git@heroku.com:gogreen.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:gogreen.git'

I fixed same problem by pushing gradle wrapper files to heroku master. 我通过将gradle包装器文件推送到heroku master解决了相同的问题。

Inside your gradle project run wrapper: gradle wrapper , which creates gradle/ directory and gradlew file. 在gradle项目中运行wrapper: gradle wrapper ,它创建gradle/目录和gradlew文件。 Commit and push those together with your code and then it should start working. 提交并与您的代码一起推送,然后它应该开始工作。

If wrapper task is not found add the following to the build.gradle 如果找不到wrapper任务,则将以下内容添加到build.gradle

task wrapper(type: Wrapper) {
    gradleVersion = '1.6'
}

On git push heroku master you should see Downloading https://services.gradle.org/distributions/gradle-1.6-bin.zip in the console log, like this: git push heroku master您应该在控制台日志中看到“ Downloading https://services.gradle.org/distributions/gradle-1.6-bin.zip ”,如下所示:

-----> Gradle app detected
-----> Installing OpenJDK 1.7... done
-----> Building Gradle app...
       WARNING: The Gradle buildpack is currently in Beta.
-----> executing ./gradlew stage
       Downloading https://services.gradle.org/distributions/gradle-1.6-bin.zip
       ................................................

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM