Gradle Kotlin编译在Terminal中失败,但在Intellij中失败

Gradle Kotlin编译在Terminal中失败,但在Intellij中失败,gradle,intellij-idea,kotlin,compiler-errors,Gradle,Intellij Idea,Kotlin,Compiler Errors,我在一个类中有以下导入: import java.net.http.HttpClient import java.net.http.HttpRequest import java.net.http.HttpResponse 当我在Intellij内部构建时,依赖关系得到了正确的解决,没有任何问题。在GitHub操作中运行CI时,也没有问题 但是,当我在macos终端中运行./gradlew clean build时,它无法解决上述依赖关系。它在compileKotlin步骤中失败 下面是我的b

我在一个类中有以下导入:

import java.net.http.HttpClient
import java.net.http.HttpRequest
import java.net.http.HttpResponse
当我在Intellij内部构建时,依赖关系得到了正确的解决,没有任何问题。在GitHub操作中运行CI时,也没有问题

但是,当我在macos终端中运行./gradlew clean build时,它无法解决上述依赖关系。它在compileKotlin步骤中失败

下面是我的build.gradle文件

plugins {
    id 'java'
    id 'org.jetbrains.kotlin.jvm' version '1.3.60'
}

group 'com.test'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()

}

dependencies {

    // kotlin
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"

    // gson
    implementation 'com.google.code.gson:gson:2.8.6'

    // testing
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.1'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.1'
    testRuntime('org.junit.jupiter:junit-jupiter-engine:5.4.2')
    testCompile("org.assertj:assertj-core:3.11.1")
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

test {
    useJUnitPlatform()
}


谢谢大家!

API是在JDK 11中引入的。从终端运行Gradle build时出现未解决的引用错误的原因很可能是那里使用的JDK的较低版本

默认情况下,
compileKotlin
任务使用与用于启动Gradle构建本身的JDK相同的JDK

Gradle通过
JAVA\u HOME
环境变量或通过在路径中查找
JAVA
命令来检测到JDK的路径。因此,为Gradle指定JDK最可靠的方法是将terminal中的
JAVA\u HOME
环境变量设置为所需的JDK路径

或者,
compileKotlin
task可以使用不同于Gradle中默认JDK的JDK。例如,即使Gradle使用JDK 8运行,它也可以为JDK 11编译。这是通过
jdkHome
编译器选项设置的:

compileKotlin {
    kotlinOptions.jdkHome = "path_to_jdk_here"
}
请参见此处Kotlin/JVM编译任务的其他选项: