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
4
Answers
I think my problem was connected to this:
Intellij insists on compiling with javac 11.0.3 instead of Java 7
I had
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
I would recommend using 15 above, i personally use 17version by amazon correto and that switch feature is available.
its up to what new java features you want to use.
however if you want to use the 20 version you had to set the sdk/jdk,language level to 20
like this:
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
you might be missing those points.
In Project settings you need to set
Project SDK to 20
and project language level to 20
You don’t need to have Java 20 to use the
enhanced switch blocks
java 17 has it too. And you are building it in java 11, and compiling in java 20, which is the reason you are getting that error.Generaly you need to add java 20 to your project in the screenshot
file -> Project Structure -> project
to use the libraries of java 20 that are compilable in java 20.I hope that makes sense.