You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JDK 19中使用record关键字创建类报错,该如何解决?

解决Java Record类报错'class' or 'interface' expected的问题

你遇到的核心问题是项目的Java语言版本配置未正确匹配JDK19——Record是Java 16才正式引入的特性,若编译环境或IDE的语言版本低于16,会将record识别为非法关键字,从而触发该错误。以下是具体解决方法:

1. 检查IDE的语言版本设置(以IDEA为例)

  • 打开File > Project Structure
  • 在Project Settings > Project中,确保Project SDK选择JDK19,Project language level设置为19 (Preview) - Pattern matching for switch或至少16 - Records, patterns, etc.
  • 切换到Modules标签页,确认所有模块的Language level与上述配置一致

2. 检查构建工具的版本配置(Maven/Gradle)

Maven

在pom.xml中添加或修改编译插件配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.11.0</version>
            <configuration>
                <source>19</source>
                <target>19</target>
            </configuration>
        </plugin>
    </plugins>
</build>

Gradle

在build.gradle中设置版本参数:

plugins {
    id 'java'
}

java {
    sourceCompatibility = JavaVersion.VERSION_19
    targetCompatibility = JavaVersion.VERSION_19
}

3. 清理IDE缓存(可选)

若配置修改后仍报错,可能是IDE缓存导致的识别异常:

  • IDEA:点击File > Invalidate Caches...,选择Invalidate and Restart

另外需确认你的Person record处于合法位置:它可以是顶层类,或嵌套在静态内部类、局部类中,但不能定义在非静态内部类里。

内容的提问来源于stack exchange,提问作者Quinn Rutherford

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 23:30:57