I am trying to build a project with JDK-12 ea. While trying to execute a sample class:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int value = scanner.nextInt();
// After JEP-325
switch (value) {
case 1 ->System.out.println("one");
case 2 ->System.out.println("two");
default ->System.out.println("many");
}
}
The IDE throws the error that reads
Error:java: error: invalid source release: 13
Relevant project configuration screens :
Module settings
SDKs
Compiler settings
IntelliJ IDEA 2018.3.3 (Community Edition) Build #IC-183.5153.38, built on January 9, 2019 JRE: 1.8.0_152-release-1343-b26 x86_64 JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o macOS 10.13.6
Tried switching back the language level to 12, without experimental features, but it ends in
I remember using the experimental features in recent past(not sure of exact IntelliJ version) successfully. Has something changed that I need to configure apart from this as well?
The right way™
The earliest version of IntelliJ that supports switch expressions is version 2019.1, which was released on March 27, 2019. You can get it here: https://www.jetbrains.com/idea/download . You also need JDK 12 of course, and set that as your project SDK.
Then you can set the language level to:
With that, everything should work.
If it doesn't, you might want to check that You've;
Manually configure --enable-preview (no intellisense)
Turning my comment into an answer. You can add the
--enable-preview
flag to the VM by going to:Run -> Edit Configurations...
Then selecting your main class from the tree menu on the left, and pasting
--enable-preview
in the "VM options" boxYou can do the same for the compiler by going to:
File -> Settings...
Then in the tree menu under Build, Execution, Deployment -> Compiler -> Java Compiler you can put
--enable-preview
in the "Additional command line parameters" box:Note that intellisense still might not work after doing that. I'm still seeing red squiggly lines under the
->
s with the error message "unexpected token". But, when I click the run button the class compiles and runs just fine.Just for the record. I was having similar error but with Java 14:
What solved the problem for me was to hunt down on every single place of the IDE where there was another Java version being mentioned that wasn't the 14th one.
The places that I had to change were:
File -> Project Structure -> Project Settings
File -> Project Structure -> Module Settings -> Tab: Sources: Language Level.
File -> Project Structure -> Module Settings -> Tab: Dependencies: Module SDK.
File -> Settings -> Compiler -> Java Compiler -> Target bytecode version.
In IDEA v2018.3.2 Preview language level added --enable-preview parameter to command line. In v2018.3.3 there is no 12 Preview level, so parameter has to be added manually as you correctly mentioned in your comment. Experimental features doesn't add any compilation parameters.