我正在尝试使用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");
}
}
IDE抛出读取错误
错误:java:错误:无效的源发行版:13
相关项目配置屏幕:
模块设置
SDK
编译器设置
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
尝试将语言级别切换回12,没有实验性功能,但最终以
结束我记得最近成功使用了实验性功能(不确定确切的IntelliJ版本)。除了此以外,我还需要配置一些更改吗?
答案 0 :(得分:8)
最早支持switch表达式的IntelliJ版本是2019.1版本,该版本于2019年3月27日发布。您可以在此处获取它:https://www.jetbrains.com/idea/download。当然,您还需要JDK 12,并将其设置为项目SDK。
然后您可以将语言级别设置为:
12 (Preview) - Switch expressions
有了它,一切都会正常工作。
如果没有,则可能要检查您是否已经拥有;
将我的评论变成答案。您可以通过以下步骤将--enable-preview
标志添加到VM:
运行-> 编辑配置...
然后从左侧的树菜单中选择您的主类,并将--enable-preview
粘贴到“ VM options”框中。
您可以通过以下步骤对编译器执行相同操作:
文件-> 设置...
然后在构建,执行,部署-> 编译器-> Java编译器下的树菜单中,您可以放置--enable-preview
在“其他命令行参数”框中:
请注意,执行此操作后,Intellisense仍然可能无法正常工作。我仍然在->
下看到红色的波浪线,并显示错误消息“意外令牌”。但是,当我单击运行按钮时,该类将编译并运行正常。
答案 1 :(得分:5)
仅作记录。我遇到类似的错误,但使用Java 14:
Error:java: error: invalid source release: 14
对我来说,解决问题的方法是在IDE的每个位置上查找被提及的另一个Java版本,而不是第14个版本。
我必须更改的地方是:
文件->项目结构->项目设置
文件->项目结构->模块设置->选项卡:源:语言级别。
文件->项目结构->模块设置->选项卡:依赖关系:模块SDK。
文件->设置->编译器-> Java编译器->目标字节码版本。
答案 2 :(得分:2)
在IDEA v2018.3.2中,预览语言级别在命令行中添加了-enable-preview 参数。在v2018.3.3中,没有12个 Preview 级别,因此必须按照您在注释中正确提及的方式手动添加参数。 实验功能不添加任何编译参数。
答案 3 :(得分:0)
假设您面临一个 SpringBoot 项目的问题,该项目具有 pom.xml 中提到的依赖项(Maven 依赖项)。执行以下操作。
保存更改,一切顺利。