Idea Intellij:Error:java: error: release version 20 not supported,pom.xml中的maven.compiler.target
我有一个像这样的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
File -> Project Structure -> Project
File -> Project Structure -> Modules -> Sources
File -> Project Structure -> Modules -> Dependencies
当尝试运行 Test.java
时出现错误:
Error:java: error: release version 20 not supported
我用的是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 -> {}
}
可用
maven.compiler.release
替换源和目标属性,以确保代码在使用较新的 JDK 构建时兼容。
- Robert Scholte 2023-03-21
我建议使用上面的 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
你可能会忽略这些要点。
您不需要 Java 20 即可使用 enhanced switch blocks
java 17 也有它。您在 java 11 中构建它,并在 java 20 中编译,这就是您收到该错误的原因。
通常,您需要将 java 20 添加到屏幕截图file -> Project Structure -> project
中的项目中,才能使用 java 20 中与 java 20 相当的库。
我希望这是有道理的。
在项目设置中,你需要将项目SDK设置为20,项目语言级别设置为20。
我认为我的问题与此有关:
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 版本,现在它工作正常
当我在 intellij 中将 jdk 从 jdk11 更改为 GraalVM-java 11 时,我遇到了同样的问题,我通过以下方式解决了这个问题 在 .idea/misc.xml 中将 JDK 更改为 JDK 11。