Java15设置语言级别为预览版后仍不支持records 求编译解决方案
问题报错信息
"java: records are not supported in -source 15 (use -source 16 or higher to enable records)"

Records是Java 16正式转正的语言特性,Java 15版本中属于预览功能,仅修改IDE语言级别为15(Preview)无法直接使用,需要额外配置参数,或者直接升级JDK版本使用正式特性,具体解决方案如下:
方案1:升级到Java 16及以上版本(推荐,无预览特性限制)
该方案可以彻底规避预览功能的额外配置要求,优先选择长期支持的JDK 17版本更佳:
- 下载并安装JDK 16或更高版本
- 同步修改所有相关配置:
- 若使用IDEA等IDE:进入
文件 → 项目结构,将项目SDK、项目语言级别、对应模块的语言级别全部修改为16或更高 - 若使用Maven构建:修改
pom.xml中maven-compiler-plugin的配置,将source、target参数调整为对应版本,示例配置如下:
- 若使用IDEA等IDE:进入
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>17</source> <target>17</target> </configuration> </plugin>
- 若使用Gradle构建:修改
build.gradle中的Java版本配置:
java { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 }
方案2:保留JDK 15,启用预览功能参数
如果暂时无法升级JDK版本,需要为编译、测试、运行全流程添加预览功能启用参数:
- IDE配置(以IDEA为例):
- 进入
设置 → 构建、执行、部署 → 编译器 → Java编译器,在对应模块的「附加命令行参数」栏添加--enable-preview - 打开代码对应的运行配置,在VM选项中同样添加
--enable-preview
- 进入
- Maven配置:修改
pom.xml的编译插件配置,同步添加预览参数:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>15</source> <target>15</target> <compilerArgs>--enable-preview</compilerArgs> </configuration> </plugin>
- Gradle配置:在
build.gradle中添加全流程预览参数:
tasks.withType(JavaCompile) { options.compilerArgs += '--enable-preview' } tasks.withType(Test) { jvmArgs += '--enable-preview' } tasks.withType(JavaExec) { jvmArgs += '--enable-preview' }
注意事项
- 如果项目使用Maven或Gradle管理,构建工具的配置优先级高于IDE的语言级别配置,仅修改IDE语言级别不会生效,必须同步修改构建工具的对应配置
- 所有配置修改完成后,建议清空项目编译缓存,重启IDE后重新构建,避免旧缓存导致报错仍然存在
内容的提问来源于stack exchange,提问作者Bartek
相关产品推荐
相关产品推荐

