Gradle-无法使用工具链:“ JDK 7(1.7)”来定位平台:“ Java SE 8”


127

我试图导入摇篮项目的IntelliJ IDEA与当地摇篮DISTRIB并得到堆栈跟踪与以下消息:Could not target platform: 'Java SE 8' using tool chain: 'JDK 7 (1.7)'。谁能解释一下可能是什么原因?


您使用哪个JDK版本?尝试使用与graddle中定义的相同的东西
Elasticsearch Ninja

我已经将同一个JDK的路径(通过gradle.properties)和Idea项目结构都放置到了Gradle中。这是你的意思吗?我想念什么吗?
Vasiliy Vlasov

是的,那之后行得通吗?
Elasticsearch Ninja's

1
抱歉不行。
Vasiliy Vlasov

您可以添加显示intelliJ级SDK的屏幕截图吗?
Elasticsearch Ninja's

Answers:


277

这是对我有用的(Intellij Idea 2018.1.2):

1)导航至:文件->设置->构建,执行,部署->构建工具-> Gradle

2)Gradle JVM:更改为版本1.8

3)重新运行gradle任务


4
存在的IntelliJ 2018年1月6日(社区版)没有这样的选择

13
在Mac上,导航至“ IntelliJ Idea”->“首选项”->“构建,执行,部署”->“构建工具”->“ Gradle”
Gubatron,

2
我再次遇到了这个问题...在我已经投票一次之后,谁又知道多久之前了……++
beauXjames

59

对于IntelliJ 2019:

Intellij IDEA->首选项->构建,执行,部署->构建工具-> Gradle-> Gradle JVM

选择正确的版本。


33

对于IntelliJ 2019,JDK 13和gRPC:

Intellij IDEA->首选项->构建,执行,部署->构建工具-> Gradle-> Gradle JVM

选择正确的版本

您可能还需要在build.gradle依赖项中添加以下行

compileOnly group: 'javax.annotation', name: 'javax.annotation-api', version: '1.3.2'

25

最后,我导入了Gradle项目。这些步骤是:

  1. 我从本地Gradle分发服务器切换到Intellij Idea Gradle包装器(等级2.14)。
  2. 我将系统变量JAVA_HOME指向JDK 8(之前是第7个),因为我通过实验发现Gradle Wrapper只能使用JDK 8处理该项目。
  3. 我删除了Windows用户.gradle目录中以前手动创建的文件gradle.properties(带有 org.gradle.java.home变量),因为我猜它没有给Gradle带来任何其他价值。

2
在Eclipse中,我也遇到了这个问题,因为我的系统将JAVA_HOME env变量设置为JDK7(运行echo $JAVA_HOME检查)。在整个系统范围内更改JAVA_HOME或使用Eclipse开始JAVA_HOME=/path/to/jdk8 eclipse缓解此问题
孙子

7

由于我不得不编译具有7兼容性的某些源代码,因此由于某些遗留系统而遇到了同样的问题。我发现在gradle配置中有两个选项设置为java 8

sourceCompatibility = 1.8
targetCompatibility = 1.8

将这些切换到1.7为我解决了问题,使JAVA_HOME指向已安装的JDK-7

sourceCompatibility = 1.7
targetCompatibility = 1.7

2

以下为我工作:

  1. 转到IntelliJ的右上角->单击图标
  2. 在“项目结构”窗口中->选择项目->在Project SDK中,选择正确的版本->单击“应用”->单击“确定”

2

我有一个非常相关的问题,但对于更高版本的Java:

$ ./gradlew clean assemble

... <other normal Gradle output>

Could not target platform: 'Java SE 11' using tool chain: 'JDK 8 (1.8)'.

我注意到使用InteliJ运行时任务成功。添加一个文件(与build.gradle级别相同)可以.java-version解决我的问题:

 # .java-version
 11.0.3


0

因此,我从其他答案中看到有几种处理它的方法。但是我不相信这一点。它必须减少为一种方式。我喜欢IDE,但是,如果我遵循不同答案提供的IDE步骤,我知道这不是基本的代数。我的错误看起来像:

* What went wrong:
Execution failed for task ':compileJava'.
> Could not target platform: 'Java SE 11' using tool chain: 'JDK 8 (1.8)'.

科学地解决它的方法是:

vi build.gradle

更改为:

java {
    sourceCompatibility = JavaVersion.toVersion('11')
    targetCompatibility = JavaVersion.toVersion('11')
}

成为:

java {
    sourceCompatibility = JavaVersion.toVersion('8')
    targetCompatibility = JavaVersion.toVersion('8')
}

科学的方法是公开讨论并处理共同点的方法。


0

尽管这个问题专门询问有关IntelliJ的问题,但这是我在Google上收到的第一个结果,因此我相信许多Eclipse用户在使用Buildship时可能也会遇到相同的问题。

您可以通过以下方式在Eclipse中设置Gradle JVM:在Gradle Tasks(在默认视图中,位于控制台附近的底部),右键单击您要运行的特定任务,然后单击“打开Gradle Run Configuration ...”。 ”,然后转到“ Java主页”标签并为您的项目选择正确的JVM。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.