idea 导入项目时出现如此错误 No enum constant org.jetbrains.jps.model.java.LanguageLevel.JDK_1_11

本文详细介绍了在IntelliJ IDEA中遇到JDK版本不匹配导致的内部错误,包括错误的具体表现,如LanguageLevel.JDK_1_11和JDK_1_9未被识别,以及详细的解决步骤。通过检查和调整项目设置中的JDK版本和Model配置,可以有效解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Table of Contents

出现的错误 

解决办法


出现的错误 

Error:Internal error: (java.lang.IllegalArgumentException) No enum constant org.jetbrains.jps.model.java.LanguageLevel.JDK_1_11
java.lang.IllegalArgumentException: No enum constant org.jetbrains.jps.model.java.LanguageLevel.JDK_1_9
    at java.lang.Enum.valueOf(Enum.java:238)
    at org.jetbrains.jps.model.java.LanguageLevel.valueOf(LanguageLevel.java:21)
    at org.jetbrains.jps.model.serialization.java.JpsJavaModelSerializerExtension$JavaProjectExtensionSerializer.loadExtension(JpsJavaModelSerializerExtension.java:285)
    at org.jetbrains.jps.model.serialization.java.JpsJavaModelSerializerExtension$JavaProjectExtensionSerializer.loadExtension(JpsJavaModelSerializerExtension.java:268)
    at org.jetbrains.jps.model.serialization.JpsLoaderBase.loadComponents(JpsLoaderBase.java:59)
    at org.jetbrains.jps.model.serialization.JpsProjectLoader.a(JpsProjectLoader.java:119)
    at org.jetbrains.jps.model.serialization.JpsProjectLoader.loadProject(JpsProjectLoader.java:98)
    at org.jetbrains.jps.model.serialization.impl.JpsSerializationManagerImpl.loadModel(JpsSerializationManagerImpl.java:41)
    at org.jetbrains.jps.cmdline.JpsModelLoaderImpl.loadModel(JpsModelLoaderImpl.java:45)
    at org.jetbrains.jps.cmdline.BuildRunner.load(BuildRunner.java:71)
    at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:198)
    at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:113)
    at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler$1.run(BuildMain.java:133)
    at org.jetbrains.jps.service.impl.SharedThreadPoolImpl$1.run(SharedThreadPoolImpl.java:41)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

解决办法

在项目下:点击右键——>找到Open Module Settings


(1)检查 project 处是否与自己安装的JDK是否一致

 

(2) 检查 Model 处是否与自己安装的JDK是否一致

注意,如果model 处有红波浪线,问题就出在此处

错误 `java: No enum constant javax.lang.model.element.Modifier.SEALED` 表示代码中尝试访问了 `javax.lang.model.element.Modifier.SEALED` 这个枚举常量,但当前使用的 Java 版本不支持它。该枚举常量是在 **Java 15** 中引入的,用于表示类或接口是否被声明为 sealed(密封),即限制其子类或实现类的范围。 ### 解决方法 1. **升级 Java 版本至 15 或更高版本** - 如果项目依赖于使用 `sealed` 关键字或相关 API 的功能,必须将开发环境和运行环境都升级到 **Java 15 或更高版本**。 - 确保 IDE 中配置的 JDK 版本、构建工具(如 Maven 或 Gradle)使用的 Java 版本以及部署环境中的 JVM 都一致地更新到支持 SEaled 类的版本 [^1]。 2. **检查模块语言级别设置** - 在某些情况下,即使项目整体配置为使用较新的 Java 版本,但如果某个模块的语言等级未正确设置为支持 `SEALED` 的版本(例如 Java 15+),也会导致编译失败。 - 确保所有模块的语言等级设置与项目 SDK 一致,并启用相应的语言特性 [^4]。 3. **避免误用 API** - 如果当前项目不需要使用密封类(sealed class)特性,应避免直接引用 `Modifier.SEALED`。 - 如果是框架或库内部使用了此特性,请确认所使用的库版本是否与当前 Java 版本兼容,必要可降级库版本以适配现有环境 [^1]。 4. **替代方案(适用于无法升级 Java 版本的情况)** - 若由于环境限制无法升级 Java 版本,则需要移除对 `Modifier.SEALED` 的直接引用,并重构涉及密封类逻辑的部分代码。 - 可以通过自定义注解或访问修饰符来模拟密封类的行为,但这通常会增加复杂性并降低可维护性。 ### 示例:检查 Java 版本 ```bash java -version javac -version ``` ### 示例:Gradle 设置 JDK 版本 ```groovy java { toolchain { languageVersion = JavaLanguageVersion.of(17) } } ``` ### 示例:Maven 设置 JDK 版本 ```xml <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> </properties> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值