Gradle-无法目标平台:'Java SE 8'使用工具链:'JDK 7(1.7)'

我正在尝试使用本地Gradle Distrib在IntelliJ IDEA中导入Gradle项目,并使用以下消息获取StackTrace:Could not target platform: 'Java SE 8' using tool chain: 'JDK 7 (1.7)'。 谁能解释一下原因是什么?

192967 次浏览

Finally I imported my Gradle project. These are the steps:

  1. I switched from local Gradle distrib to Intellij Idea Gradle Wrapper (gradle-2.14).
  2. I pointed system variable JAVA_HOME to JDK 8 (it was 7th previously) as I had figured out by experiments that Gradle Wrapper could process the project with JDK 8 only.
  3. I deleted previously manually created file gradle.properties (with org.gradle.java.homevariable) in windows user .gradle directory as, I guessed, it didn't bring any additional value to Gradle.

Since I had to compile some source with 7 compatibility, because of some legacy system and ran into the same problem. I found out that in the gradle configuration there where two options set to java 8

sourceCompatibility = 1.8
targetCompatibility = 1.8

switching these to 1.7 solved the problem for me, keeping JAVA_HOME pointing to the installed JDK-7

sourceCompatibility = 1.7
targetCompatibility = 1.7

This is what worked for me (Intellij Idea 2018.1.2):

1) Navigate to: File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle

2) Gradle JVM: change to version 1.8

3) Re-run the gradle task

The following worked for me:

  1. Go to the top right corner of IntelliJ -> click the icon
  2. In the Project Structure window -> Select project -> In the Project SDK, choose the correct version -> Click Apply -> Click Okay

For IntelliJ 2019:

Intellij IDEA -> Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle -> Gradle JVM

Select correct version.

For IntelliJ 2019, JDK 13 and gRPC:

Intellij IDEA -> Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle -> Gradle JVM

and Select correct version.

you might also have to adding below line in your build.gradle dependencies

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

I had a very related issue but for higher Java versions:

$ ./gradlew clean assemble


... <other normal Gradle output>


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

I noticed that the task succeeded when running using InteliJ. Adding a file (same level as build.gradle) called .java-version solved my issue:

 # .java-version
11.0.3

And so I see from other answers that there are several ways of dealing with it. But I don't believe this. It has to be reduced into one way. I love IDE but, but if I follow the IDE steps provided from different answers I know this is not the fundamental algebra. My error looked like:

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

And the way to solve it scientifically is:

vi build.gradle

To change from:

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

to become:

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

The scientific method is that method that is open for argumentation and deals on common denominators.

you have to change the -> sourceCompatibility = '1.7' in build.Gradle

Although this question specifically asks about IntelliJ, this was the first result I received on Google, so I believe that many Eclipse users may have the same problem using Buildship.

You can set your Gradle JVM in Eclipse by going to Gradle Tasks (in the default view, down at the bottom near the console), right-clicking on the specific task you are trying to run, clicking "Open Gradle Run Configuration..." and moving to the Java Home tab and picking the correct JVM for your project.

Java 9 JDK 9.0.4

  1. Go to the top left corner of Android Studio (4.1.1)-> click on File
  2. Click on Setting
  3. Click on Build, Execution, Deployment
  4. Click on Compiler
  5. Click on Kotlin Compiler
  6. Target JVM version

File | Settings | Build, Execution, Deployment | Compiler | Kotlin Compiler

Adding to all information above to change the JVM version on IntelliJ settings, I'd like to mention that you have to do that for all modules of your project.

So if you are working on a multimodule project, make sure you changed the JVM version for all of them.

If you are running gradle build from IntelliJ terminal do followings:

  1. Check what java version JAVA_HOME is pointing to with command: INBENJKUMARLM1:payment-service jkuma00$ echo $JAVA_HOME /Users/jkuma00/.sdkman/candidates/java/11.0.11.9.1-amzn
  2. Check source compatibility version in build.gradle file. sourceCompatibility = JavaVersion.VERSION_11

ROOT CAUSE: Major java version reported by $JAVA_HOME must match with java version value which sourceCompatibility property has. If there is a mismatch. This issue will happen.

RESOLUTION: Either change source compatiblity version or change JAVA_HOME value. Motive is to match these versions and everything should be okay.

If you're using multiple versions of JDKs, a couple of things to note.

  1. All the JDKs need to be added to the path.

  2. Since, the JAVA_HOME variable needs to point to one path, assign it to your most frequently used jdk (ex: Java 8). And for rest of the JDK versions, create and assign separate java-home environment variables. e.g. JAVA_HOME_11 for Java 11 and so forth.

  3. For build tools such as gradle, if you're building using CLI, or pipelines, you will need to point your JDK_HOME to the specific version needed. e.g. JAVA_HOME_11 if your project is based on Java 11.

  4. Tools like intellij idea also allow you to set up project wise JDK version. This in-turn helps them choose the corresponding runtime.

In my experience, all four checks need to be made if your project is complaining of Java inconsistency during compilation, build or runs.