I have a Idea Intellij
project like this:
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
When trying to run Test.java
I get an error:
Error:java: error: release version 20 not supported
I use Ubuntu. When I type java --version
in the terminal, I get:
openjdk 20 2023-03-21
OpenJDK Runtime Environment (build 20+36-2344)
OpenJDK 64-Bit Server VM (build 20+36-2344, mixed mode, sharing)
I'm not sure how I can make Intellij use Java 20
When I use
<properties>
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.source>11</maven.compiler.source>
</properties>
the code runs fine. However I want a newer Java to be used, so that features like enhanced switch blocks
:
switch (value) {
case 1 -> {}
}
are available
I think my problem was connected to this:
Intellij insists on compiling with javac 11.0.3 instead of 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.
I had
Information:javac 11 was used to compile java sources
message before the actual error message.
So I think despite all the correct settings of JDK, Idea Intellij just insisted on using JDK 11 to compile and there was nothing that could be done about it.
I ended up just downloading the latest Intellij version and now it works fine