IntelliJ - 无效源版本:17

Mic*_*ael 181 java intellij-idea gradle java-17

我在 IntelliJ 中使用 Gradle 创建了一个使用 Java 17 的新 Java 项目。运行我的应用程序时出现错误Cause: error: invalid source release: 17

我的设置

我已经安装openjdk-17完毕IntelliJ并将其设置为我的Project SDK.

Project language level设置为17 - Sealed types, always-strict floating-point semantics.

在此输入图像描述

Modules -> Sources我已经设置Language levelProject default (17 - Sealed types, always strict floating-point semantics).

模块->来源

Modules -> Dependencies我已经设置Module SDKProject SDK openjdk-17.

模块->依赖项

Settings -> Build, Execution, Deployment -> Compiler -> Java Compiler我已经设置Project bytecode version17.

在此输入图像描述

摇篮

plugins {
    id 'org.springframework.boot' version '2.5.6'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.app'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-websocket'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    implementation 'com.fasterxml.jackson.core:jackson-core:2.13.0'
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.0'
}

test {
    useJUnitPlatform()
}
Run Code Online (Sandbox Code Playgroud)

我已经查看了这里的所有答案,但我似乎无法解决这个问题。我一定是错过了什么,但我找不到它。我在使用 Java 8 或 11 时没有遇到任何问题。

我该如何解决这个问题?

小智 411

在intellij中只需将Gradle JVM设置为Java版本17。

“文件 -> 设置.. -> 构建、执行、部署 -> 构建工具 -> Gradle”,选择你的项目并将 Gradle JVM 设置为你的 java 17.0.1

  • macOS 中的菜单“IntelliJ Idea -> 首选项 -> 构建、执行、部署 -> 构建工具 -> Gradle” (21认同)
  • 有菜单,但菜单中没有项目和 Gradle JVM 的可选字段:( (Windows10 x64、Intellij 2021.3.1 Ultimate) (3认同)
  • 您可能还想从文件 -> 项目结构 (⌘;) -> 项目设置 -> 项目 -> SDK 更改项目 SDK。否则,您可能会收到“java.lang.UnsupportedClassVersionError” (3认同)
  • 我怎样才能将此添加为书签?我总是需要回到这个话题。 (2认同)

Jor*_*var 57

一张图片胜过千言万语!

转到首选项并更改 Gradle JVM。

在此输入图像描述


abh*_*sen 41

将 Gradle JVM 设置为目标构建 jvm

文件 -> 设置.. ->在此输入图像描述


tma*_*wen 31

该消息通常表明您的JAVA_HOME环境变量指向不同的Java版本。

以下是要遵循的步骤:

  • 关闭IntelliJ IDEA
  • 打开终端窗口并检查JAVA_HOME变量值:
    • *尼克斯系统:echo $JAVA_HOME
    • Windows系统:echo %JAVA_HOME%
  • JAVA_HOME路径应该指向不同的路径,然后将其设置为openjdk-17路径:
    • *尼克斯系统:export JAVA_HOME=/path/to/openjdk-17
    • Windows系统:set JAVA_HOME=path\to\openjdk-17
  • 在IntelliJ IDEA中再次打开您的项目
  • 确保设置目标兼容性版本(不仅仅是sourceCompatibility

您应该能够构建您的项目。

编辑:Gradle 工具链

您可能还需要通过将Java插件工具链设置为您的目标版本来指示Gradle使用与其本身不同的JVM :

// build.gradle
java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(17)
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 您可能需要添加“工具链”配置以避免 Gradle 使用其默认配置(这可能就是将 sourceCompatibility 设置为 11 时成功的原因) (2认同)
  • 对于 IntelliJ 用户:转到“设置”->“构建、执行、部署”->“构建工具”->“Gradle”,然后将 Gradle JVM 设置为您所需的 java 版本。 (2认同)

Sum*_*iya 5

intellij 引发此错误的原因可能有很多

  • 检查您的 JAVA_HOME ->
echo $JAVA_HOME
Run Code Online (Sandbox Code Playgroud)

如果 JAVA_HOME 不正确,请更新 JAVA_HOME 环境变量。

  • 检查IntelliJ中的项目结构是否正确。
File > Project Structure > Project Setting > Project -> SDK and Language level should match

File > Project Structure > Project Setting > Modules -> Language Level should match with SDK
Run Code Online (Sandbox Code Playgroud)
  • 检查并修复首选项中的设置是否正确
Preferences > Build, Execution and Deployment > Gradle > Gradle JVM should match with SDK (Preferences > Build, Execution and Deployment > maven if you're using maven)

Preferences > Build, Execution and Deployment > Compiler > Java Compiler > Project Bytecode version (this should match with your SDK as well)
Run Code Online (Sandbox Code Playgroud)