Idea Intellij:Error:java: error: release version 20 not supported,pom.xml中的maven.compiler.target

回答 5 浏览 7613 2023-03-09

我有一个像这样的Idea Intellij项目:

Test.java:

public class Test {
    public static void main(String[] args) {
        System.out.println("Test");
    }
}

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>test</groupId>
    <artifactId>test</artifactId>
    <version>1.0-SNAPSHOT</version>
     
    <properties>
        <maven.compiler.target>20</maven.compiler.target>
        <maven.compiler.source>20</maven.compiler.source>
    </properties>
</project>

Idea Intellij

File -> Settings -> Build, Execution, Deployment -> Compiler -> Java Compiler

enter image description here

File -> Project Structure -> Project

enter image description here

File -> Project Structure -> Modules -> Sources

enter image description here

File -> Project Structure -> Modules -> Dependencies

enter image description here

当尝试运行 Test.java 时出现错误:

Error:java: error: release version 20 not supported

enter image description here

我用的是Ubuntu。当我在终端中输入java --version时,我得到:

openjdk 20 2023-03-21
OpenJDK Runtime Environment (build 20+36-2344)
OpenJDK 64-Bit Server VM (build 20+36-2344, mixed mode, sharing)

我不知道如何让 Intellij 使用 Java 20

当我使用

   <properties>
        <maven.compiler.target>11</maven.compiler.target>
        <maven.compiler.source>11</maven.compiler.source>
    </properties>

代码运行良好。不过,我希望使用更新的 Java,以便使用 enhanced switch blocks 等功能:

switch (value)  {
 case 1 -> {}
}

可用

parsecer 提问于2023-03-09
将 IDE Project JDK 更改为 20,您使用的是 JDK 11,它无法定位级别 20。对 Maven JDK 也执行相同操作: i.imgur.com/SbuV0a9.pngCrazyCoder 2023-03-09
题外话:请用 maven.compiler.release 替换源和目标属性,以确保代码在使用较新的 JDK 构建时兼容。Robert Scholte 2023-03-21
对我来说,“File->Project Structure->Project->Language Level”然后选择正确的版本解决了问题。raz 2023-06-18
5 个回答
#1楼
得票数 2

我建议使用上面的 15,我个人使用 amazon corretto 的 17 版本,并且可以使用切换功能。 这取决于您想要使用哪些新的 java 功能。

但是,如果您想使用 20 版本,则必须将 sdk/jdk、语言级别设置为 20

像这样:

https://i.stack.imgur.com/SBena.png

https://i.stack.imgur.com/TbyJh.png

https://i.stack.imgur.com/BAAQJ.png

https://i.stack.imgur.com/4tJmI.png

你可能会忽略这些要点。

Saco MongoDB 提问于2023-03-09
#2楼
得票数 2

您不需要 Java 20 即可使用 enhanced switch blocks java 17 也有它。您在 java 11 中构建它,并在 java 20 中编译,这就是您收到该错误的原因。

通常,您需要将 java 20 添加到屏幕截图file -> Project Structure -> project中的项目中,才能使用 java 20 中与 java 20 相当的库。

我希望这是有道理的。

Bladimir Jimenez 提问于2023-03-24
#3楼
得票数 1

在项目设置中,你需要将项目SDK设置为20,项目语言级别设置为20。

cherish sham 提问于2023-03-20
#4楼 已采纳
得票数 0

我认为我的问题与此有关:

Intellij 坚持使用 javac 11.0.3 而不是 Java 7 进行编译

IntelliJ IDEA checks all JDKs that are used in the project: the JDKs that are defined on both the project and module levels.

IntelliJ IDEA calculates the latest of these JDKs. This is necessary to make sure that all modules can be compiled.

If the version of the latest JDK configured is lower than 1.6, IntelliJ IDEA will pick the JDK version that is used for running the IDE. This limitation is related to the fact that the compiler API used by IntelliJ IDEA for building projects is supported starting from JDK 1.6.

我有

Information:javac 11 was used to compile java sources

在实际的错误信息之前,有一条信息。

所以我认为尽管JDK的设置都正确,但Idea Intellij只是坚持使用JDK 11来编译,对此没有什么办法。

我最终只是下载了最新的 Intellij 版本,现在它工作正常

parsecer 提问于2023-03-18
#5楼
得票数 0

当我在 intellij 中将 jdk 从 jdk11 更改为 GraalVM-java 11 时,我遇到了同样的问题,我通过以下方式解决了这个问题 在 .idea/misc.xml 中将 JDK 更改为 JDK 11。

另请参阅 https://youtrack.jetbrains.com/issue/IDEA-240068

de bois Michiel 提问于2023-05-23