无法使用工具链:“ JDK 8(1.8)”来定位平台:“ Java SE 11”

时间:2019-08-15 18:14:59

标签: spring-boot heroku

尝试将我的应用程序部署到heroku,但由于以下错误而不断失败: 无法使用工具链“ JDK 8(1.8)”定位平台:“ Java SE 11”

我有我的JAVA_HOME,JAVA_PATH等。.设置,我在这里有所有这些图像,我认为它们是正确的。如果我检查java -version和javac -version,它们都显示Java 11。

我还尝试将system.properties.txt文件放到根文件夹中,而不是在.txt中放一个带有java.runtime.version = 11的.gradle文件。

我在build.gradle中也有这个

sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11

但是它仍然像这样在deploy(git push heroku master)开始安装jdk8:

Gradle app detected
remote: -----> Spring Boot detected
remote: -----> Installing JDK 1.8... done
remote: -----> Building Gradle app...
remote: -----> executing ./gradlew build -x test
remote:        Downloading https://services.gradle.org/distributions/gradle-5.4.1-all.zip

这是部署失败的图像和设置的环境变量。

enter image description here enter image description here

我已经遇到这个问题一个星期了,我想我已经尽力了,但是如果有人可以帮助我,我将非常感激。谢谢!

5 个答案:

答案 0 :(得分:3)

我遇到同样的问题,收到“使用工具链JDK 8的Java SE 11”错误。谷歌搜索问题之后,提示我使用JAVA_HOME设置。

我使用sdkman管理我的Java和Kotlin版本的当前版本设置,因此在检查了sdkman中配置的当前Java版本之后,我意识到它指向的是针对Java 8的GraalVM 19版本。

所以我只是用“ sdkman use java 11.0.1-zulu”将当前的JAVA_HOME恢复为11,一切正常。

Softjake

答案 1 :(得分:1)

通过将system.properties.txt重命名为system.properties,听起来像it's okay to answer your own question!。 (顺便说一下,Java Support article

如果对其他人有帮助,请参阅Heroku的官方文档:

创建一个system.properties文件(如果尚不存在),指定版本,并将其提交到git。受支持的版本在https://devcenter.heroku.com/articles/customizing-the-jdk#specify-a-jdk-version中进行了描述。该文件的内容应如下所示:

java.runtime.version=11

clone

答案 2 :(得分:0)

我在Linux Ubuntu中使用openjdk 11时遇到了同样的问题。
但这在我的工作笔记本电脑上还可以。相同的操作系统Ubuntu 18.04 LTS。
我在笔记本电脑中检查了JDK的版本:

/usr/lib/jvm/java-11-openjdk-amd64/bin/java

但内部使用的是工具链:“ JDK 10(1.10)” 所以我收到了这个消息

using tool chain: 'JDK 10 (1.10)'

我检查了我的工作笔记本电脑,它有

 openjdk version "11.0.4" 2019-07-16
 OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.4+11)
 OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.4+11, mixed mode)

在搜索openjdk时,我发现了此站点  https://adoptopenjdk.net 我可以在其中获得OpenJDK 11(LTS)build 11.0.4 + 11

在将其添加到替代项之后

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk-11.0.4+11/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk-11.0.4+11/bin/javac" 1
sudo update-alternatives --install "/usr/bin/javadoc" "javadoc" "/usr/lib/jvm/jdk-11.0.4+11/bin/javadoc" 1

然后选择所有人

sudo update-alternatives --config java
sudo update-alternatives --config javac
sudo update-alternatives --config javadoc

问题解决之后。 我希望这可以帮助其他人。

答案 3 :(得分:0)

使用此代码行将 system.properties 文件添加到您的项目中。

java.runtime.version=11

答案 4 :(得分:0)

我不知道为什么,heroku 没有检测到 gradle 版本提供的

sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11

一旦我将其更改为纯字符串,就会检测到 JDK 11

sourceCompatibility = '11'
targetCompatibility = '11'

结果:

remote: -----> Building on the Heroku-20 stack
remote: -----> Using buildpack: heroku/jvm
remote: -----> heroku-deploy app detected
remote: -----> Installing JDK 11... done
remote: -----> Discovering process types
remote:        Procfile declares types -> web