错误:java:错误:无效的源发布:13将JDK12与IntelliJ一起使用

Nam*_*man 5 java intellij-idea java-12 preview-feature

我正在尝试使用JDK-12 ea构建一个项目。尝试执行示例类时:

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");
    }
} 
Run Code Online (Sandbox Code Playgroud)

IDE抛出读取的错误

错误:java:错误:无效的源发行版:13

相关项目配置屏幕:

在此处输入图片说明

模块设定

在此处输入图片说明

开发包

在此处输入图片说明

在此处输入图片说明

编译器设定

在此处输入图片说明 关于IDE:

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
Run Code Online (Sandbox Code Playgroud)

尝试将语言级别切换回12,没有实验性功能,但最终以

在此处输入图片说明

我记得最近成功使用了实验性功能(不确定确切的IntelliJ版本)。除此以外,我还需要配置一些更改吗?

Jor*_*nee 9

正确的方法™

支持开关表达式的IntelliJ最早版本是2019.1版本,该版本于2019年3月27日发布。您可以在此处获取它:https ://www.jetbrains.com/idea/download 。当然,您还需要JDK 12,并将其设置为项目SDK。

然后,您可以将语言级别设置为:

12 (Preview) - Switch expressions
Run Code Online (Sandbox Code Playgroud)

这样,一切都应该工作。

如果不是,您可能要检查您是否已经;

  • 将项目语言级别以及模块语言级别设置为“ 12(预览)”
  • 将应用程序的运行配置中的执行JRE设置为12(或默认值,这是项目SDK)。
  • 在“设置”->“构建,执行,部署” /编译器/ Java编译器中设置正确的字节码版本。(将此字段留空以匹配语言级别)

手动配置--enable-preview(无智能提示)

把我的评论变成答案。您可以通过以下方式将--enable-preview标志添加到VM:

运行 -> 编辑配置...

然后从左侧的树菜单中选择您的主类,然后粘贴--enable-preview在“ VM options”框中

在此处输入图片说明

您可以通过以下步骤对编译器执行相同的操作:

文件 -> 设置...

然后,在“ 构建,执行,部署 -> 编译器 -> Java编译器--enable-preview ” 下的树菜单中可以在“其他命令行参数”框中输入:

在此处输入图片说明

请注意,执行此操作后,Intellisense仍然可能无法正常工作。我仍然在->s 下看到红色的波浪线,并显示错误消息“意外的令牌”。但是,当我单击运行按钮时,该类将编译并运行正常。


小智 9

只是为了记录。我有类似的错误,但使用 Java 14:

Error:java: error: invalid source release: 14
Run Code Online (Sandbox Code Playgroud)

对我来说解决这个问题的是寻找 IDE 的每一个地方,其中提到了另一个 Java 版本,而不是第 14 个版本。

我不得不改变的地方是:

文件 -> 项目结构 -> 项目设置

文件 -> 项目结构 -> 模块设置 -> 选项卡:来源:语言级别。

文件 -> 项目结构 -> 模块设置 -> 选项卡:依赖项:模块 SDK。

文件 -> 设置 -> 编译器 -> Java 编译器 -> 目标字节码版本。

  • 我在“文件 -> 设置 -> 编译器 -> Java 编译器 -> 目标字节码版本”中指定版本。这样可行 (2认同)