Spring Boot 无法瞄准平台:使用工具链的“Java SE 11”:'JDK 8(1.8)'

1zmg4dgp  于 2023-06-22  发布在  Spring
关注(0)|答案(6)|浏览(229)

尝试将我的应用程序部署到heroku,但它一直失败,并出现错误:无法瞄准平台:使用工具链的“Java SE 11”:'JDK 8(1.8)'
我有我的JAVA_HOME,JAVA_PATH,等等。设置,我有一个图像,他们都在这里,我认为他们是正确的。如果我检查java -version和javac -version,它们都显示java 11。
我还尝试将system.properties.txt文件放到根文件夹中,并将.txt文件替换为.gradle文件,其中包含java.runtime.version=11。
我也有这个在我的建设。gradle:

sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11

但是它会在部署开始时安装jdk 8(git push heroku master),如下所示:

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

下面是部署失败的映像和设置的环境变量。

我一直与这个问题一个星期了,现在,我想我尝试了所有,但我会真的很感激,如果有人能帮助我与此。谢谢你!

nwo49xxi

nwo49xxi1#

我遇到了同样的问题,得到了“Java SE 11使用工具链JDK 8”错误。在谷歌搜索了这个问题之后,我被提示使用JAVA_HOME设置。
我使用sdkman来管理我的Java和Kotlin版本的当前版本设置,所以在检查了sdkman中配置的当前Java版本后,我意识到它指向的是针对Java 8的GraalVM版本19。
所以我简单地用“sdkman use java 11.0.1-zulu”将当前的JAVA_HOME恢复到11,一切都工作正常。
Softjake

wgx48brx

wgx48brx2#

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

java.runtime.version=11
lx0bsm1f

lx0bsm1f3#

听起来你已经通过将system.properties.txt重命名为system.properties解决了这个问题。(it's okay to answer your own question!
如果对其他人有帮助,这是Heroku的官方文档:
创建一个system.properties文件(如果还不存在),指定版本,然后提交到git。支持的版本在Java支持文章中描述。该文件的内容应类似于以下内容:

java.runtime.version=11

https://devcenter.heroku.com/articles/customizing-the-jdk#specify-a-jdk-version

ozxc1zmp

ozxc1zmp4#

我在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

问题解决后。我希望这可以帮助别人。

x8goxv8g

x8goxv8g5#

我不知道为什么,但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
trnvg8h3

trnvg8h36#

在我的例子中,我打开Android Studio,点击“Android gradle插件可以升级”通知来解决这个问题

相关问题