IntelliJ运行ScalaTests时报错java: option -source不能与--release共同使用
错误信息
java: error: option -source cannot be used together with --release
报错核心原因
该冲突由Java编译参数配置重复导致:-source/-target是JDK8及之前版本用于指定编译兼容版本的参数,--release是JDK9之后推出的统一跨编译参数,二者作用完全重叠,同时配置就会触发该报错。在IntelliJ IDEA 2021.2版本中运行ScalaTests时,会默认调用项目绑定的Java编译配置,很容易触发该冲突。
解决方案
方案1:关闭IDEA默认的release参数勾选(最通用解决方案)
- 打开IDEA设置路径:
File→Settings→Build, Execution, Deployment→Compiler→Java Compiler - 取消勾选页面底部的
Use '--release' option for cross-compilation (Java 9 and later)选项 - 点击
Apply保存配置后,重新运行ScalaTests即可
方案2:统一项目JDK版本配置
如果方案1未生效,检查如下配置是否一致:
- 打开
Project Structure面板(快捷键Ctrl+Alt+Shift+S) - 确认
Project页签的Project SDK、Project language level和项目实际使用的JDK版本一致 - 切换到
Modules页签,逐个检查所有子模块的SDK和Language level配置,和全局项目配置保持一致 - 回到Java Compiler设置页,确认
Project bytecode version和各模块的Target bytecode version和上述JDK版本保持统一
方案3:调整构建工具配置(针对Maven/Gradle管理的项目)
如果项目使用构建工具管理,需要避免配置文件中同时出现两种编译参数:
Maven项目
在pom.xml的properties节点中,仅保留一组编译配置即可,二选一:
方案A:仅保留release配置(适合JDK9+版本)
<properties> <maven.compiler.release>11</maven.compiler.release> </properties>方案B:仅保留source/target配置
<properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties>
修改后执行Reload All Maven Projects,再重新运行测试。
Gradle项目
在build.gradle中仅保留一组编译配置即可,二选一:
方案A:仅保留release配置
java { release = 11 }方案B:仅保留sourceCompatibility/targetCompatibility配置
sourceCompatibility = 11 targetCompatibility = 11
修改后刷新Gradle配置再运行测试。
内容的提问来源于stack exchange,提问作者samir benzenine
相关产品推荐
相关产品推荐

