VS Code报指定编译器合规版本1.8但使用JRE18警告如何解决
警告原因
提示the compiler compliance specified is 1.8 but a jre 18 is used的核心原因是项目配置的Java编译目标版本是Java 8(1.8),但VS Code的Java插件当前调用的运行/编译环境是JRE 18,版本不匹配会导致两类问题:要么编译阶段拦截你写的JDK 18新语法,要么编译出的字节码版本过高,无法在目标Java 8环境运行。
解决方法
根据项目的实际兼容需求选对应方案即可:
方案1:项目需要用JDK 18特性,将编译合规等级升到18
- 无构建工具的普通Java项目:
- 用快捷键
Ctrl+Shift+P(Windows/Linux)/Cmd+Shift+P(Mac)唤起命令面板 - 搜索执行
Java: Configure Java Runtime打开Java运行时配置页 - 切到
Project标签,定位到出问题的项目,在Compiler Compliance下拉框选18,等插件自动同步完配置警告就会消失
- 用快捷键
- Maven/Gradle托管的项目必须修改构建配置,否则刷新项目后配置会被还原:
- Maven项目在
pom.xml里修改maven-compiler-plugin的版本配置:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <source>18</source> <target>18</target> </configuration> </plugin> - Gradle项目在
build.gradle里添加兼容配置:sourceCompatibility = '18' targetCompatibility = '18'
Java: Reload Projects刷新项目配置生效。 - Maven项目在
方案2:项目需要兼容Java 8环境,将项目绑定的JDK切到1.8版本
- 先确认本地已安装JDK 8,打开
Java: Configure Java Runtime的Installed JDKs标签,确认插件能识别到JDK 8的安装路径,没识别到就点Add JDK手动选择JDK 8的安装目录添加 - 切到
Project标签,找到对应项目,把Project JDK下拉选项切到安装好的JDK 8,同时确认Compiler Compliance保持为1.8 - 想让所有新建项目默认用JDK 8的话,打开用户设置
settings.json,添加如下配置,替换路径为本地实际安装路径即可:
"java.configuration.runtimes": [ { "name": "JavaSE-1.8", "path": "你的本地JDK8安装路径", "default": true }, { "name": "JavaSE-18", "path": "你的本地JDK18安装路径" } ]
别直接点警告弹窗的快速修复按钮直接改合规设置,这种临时修改不会写入持久化配置,重启VS Code或者刷新项目后警告会复现,也没法从根本解决版本不匹配的兼容问题。
内容的提问来源于stack exchange,提问作者Juan Modica
相关产品推荐
相关产品推荐

