基于Gradle的IntelliJ项目Java21+配置及switch表达式报错求助
Java 21 Switch表达式编译错误解决:
illegal start of expression 问题现象
在基于Gradle的IntelliJ项目中使用Java 21的箭头式switch表达式时,触发编译错误,报错信息:
error: illegal start of expression return switch (setType) {
对应的代码示例:
private static SimpleAbstractSet<String> makeSet(String setType){ return switch (setType) { case "HashSet" -> new SimpleHashSet<>(); case "TreeSet" -> new SimpleTreeSet<>(); ... default -> throw new IllegalArgumentException(); }; }
环境说明
- 操作系统:Linux CentOS
- 已配置:Java 21.0.4、Gradle 8.4
- IntelliJ设置:项目结构与全局设置均指定Java 21 SDK及对应语言级别
- 代码来源:范德堡大学《Java与线程函数式编程》MOOC,原环境可正常运行
解决方法
排查后发现,部分MOOC子项目的Gradle JVM被默认设置为Java 11,与项目指定的Java 21版本不匹配。将该子项目的Gradle JVM修改为JAVA_HOME指向的Oracle OpenJDK 21.0.4后,编译错误消失。
内容的提问来源于stack exchange,提问作者Edwin
相关产品推荐
相关产品推荐

