java: 警告: 源发行版 17 需要目标发行版 17

这个警告通常是由于 Java 编译器的源版本与目标版本不匹配引起的。在你的项目中,源代码可能是用较高的 JDK(如 JDK 17)编写的,而目标版本没有正确设置为 JDK 17。

解决这个问题,你需要确保项目的 sourcetarget 编译版本都设置为 JDK 17。下面是几种常见的解决方法:

1. 在 Maven 中设置 Java 编译版本

如果你使用的是 Maven 构建工具,可以在 pom.xml 中配置 maven-compiler-plugin 来明确指定 Java 版本。

pom.xml 中找到 <build> 标签并添加以下配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>17</source>
                <target>17</target>
            </configuration>
        </plugin>
    </plugins>
</build>

这样,Maven 会确保代码使用 JDK 17 进行编译。

2. 在 Gradle 中设置 Java 编译版本

如果你使用的是 Gradle 构建工具,可以在 build.gradle 文件中配置 Java 编译版本。

plugins {
    id 'java'
}

java {
    sourceCompatibility = JavaVersion.VERSION_17
    targetCompatibility = JavaVersion.VERSION_17
}

tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}

这样,Gradle 会使用 JDK 17 来编译项目。

3. 在 IntelliJ IDEA 中设置 JDK 版本

如果你是在 IntelliJ IDEA 中工作,确保你的项目配置正确。你可以按照以下步骤进行检查和设置:

  1. 打开 File -> Project Structure
  2. Project 标签页中,确保 Project SDK 设置为 JDK 17。
  3. Modules 标签页中,确保 Language level 设置为 17
  4. Build, Execution, Deployment -> Compiler 中,确保 Target bytecode version 也设置为 JDK 17。

4. 手动设置 javac 编译选项

如果你在命令行中使用 javac 编译项目,确保添加了适当的编译选项。比如:

javac -source 17 -target 17 YourClass.java

这会指定源代码和目标字节码版本都为 JDK 17。

5. 检查 Java 环境变量

最后,确保 JAVA_HOME 环境变量指向正确的 JDK 17 路径。你可以通过以下命令确认当前的 JAVA_HOME

echo $JAVA_HOME   # macOS / Linux
echo %JAVA_HOME%  # Windows

如果需要更改 JAVA_HOME,确保它指向 JDK 17 安装路径。


以上方法可以帮助你解决编译时的版本不匹配问题。如果警告依然存在,尝试重新构建项目或者重启 IDE。

实际操作,修改:
在这里插入图片描述
把这个地方的17改一下

在这里插入图片描述

java: 无效的目标发行版: 17

这个错误通常意味着你的 JDK 版本设置为 17,但你实际上可能没有正确安装 JDK 17,或者你的构建工具(如 Maven 或 Gradle)没有正确配置 JDK 17。

解决方法

  1. 确保安装了 JDK 17

首先,确保你已经安装了 JDK 17。如果你使用的是 JDK 17,确保正确安装,并设置 JAVA_HOME 环境变量。

你可以通过以下命令来检查当前安装的 JDK 版本:

java -version

它应该返回类似下面的信息:

openjdk version "17.0.1" 2021-10-19
OpenJDK Runtime Environment (build 17.0.1+12-39)
OpenJDK 64-Bit Server VM (build 17.0.1+12-39, mixed mode, sharing)

如果没有安装 JDK 17,可以从 OracleOpenJDK 下载并安装 JDK 17。

  1. 检查 IntelliJ IDEA 设置

如果你使用的是 IntelliJ IDEA,请确保 JAVA_HOME 配置正确,并且 IntelliJ 已经识别到 JDK 17。

  • 设置 JAVA_HOME

    在操作系统中设置 JAVA_HOME 环境变量指向 JDK 17 的安装路径。

    Windows

    • 打开 控制面板 -> 系统和安全 -> 系统 -> 高级系统设置 -> 环境变量
    • 找到 JAVA_HOME 变量(如果没有就新建),设置为 JDK 17 的安装路径。例如:
      C:\Program Files\Java\jdk-17
      
    • 更新 Path 变量,确保包含 JAVA_HOME/bin 路径。

    Linux / macOS
    .bashrc.zshrc 中添加以下内容:

    export JAVA_HOME=/path/to/jdk-17
    export PATH=$JAVA_HOME/bin:$PATH
    

    然后重新加载配置:

    source ~/.bashrc   # 或 source ~/.zshrc
    
  • 在 IntelliJ IDEA 配置 JDK 17

    1. 打开 IntelliJ IDEA,选择 File -> Project Structure
    2. Project Settings -> Project 中,确保 Project SDK 设置为 JDK 17。
    3. Modules 标签中,确保模块使用 JDK 17 作为编译版本。
  1. 配置 Maven 或 Gradle

如果你在使用 Maven 或 Gradle 构建项目,请确保配置了 JDK 17。

对于 Maven:

pom.xml 中,确保 maven-compiler-plugin 配置正确:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>17</source>
                <target>17</target>
            </configuration>
        </plugin>
    </plugins>
</build>
对于 Gradle:

build.gradle 文件中配置:

plugins {
    id 'java'
}

java {
    sourceCompatibility = JavaVersion.VERSION_17
    targetCompatibility = JavaVersion.VERSION_17
}

tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}
  1. 清理和重建项目
  • 清理并重新构建你的项目。这可以帮助你清除旧的编译缓存和配置。

    Maven:

    mvn clean install
    

    Gradle:

    gradle clean build
    
  1. 检查 JDK 安装路径

确认你的 JAVA_HOME 环境变量和 IDE 中设置的 JDK 版本正确,并且指向 JDK 17 的安装目录。你可以使用以下命令来检查路径:

echo $JAVA_HOME   # macOS / Linux
echo %JAVA_HOME%  # Windows

如果以上步骤都没问题,重新编译项目时,错误应该就能解决。如果问题仍然存在,请检查你的 IDE 是否正确配置了 JDK 17,并确保你的构建工具(如 Maven 或 Gradle)使用的是 JDK 17 进行构建。

具体检查:

C:\Users\20120\Desktop\demo>java -version
java version "17.0.5" 2022-10-18 LTS
Java(TM) SE Runtime Environment (build 17.0.5+9-LTS-191)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.5+9-LTS-191, mixed mode, sharing)

原文链接:java: 警告: 源发行版 17 需要目标发行版 17

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容