Scala 不是基于 Java 10
Scala not builds on Java 10
在通过 Intellij Idea 构建时,我收到以下消息:
Error:scalac: 'jvm-1.10' is not a valid choice for '-target'
Error:scalac: bad option: '-target:jvm-1.10'
稍后,在 Java 升级后
Build, Execution, Deployment -> Build Tools -> Gradle -> Gradle JVM:
1.8 Build, Execution, Deployment -> Complier -> Scala Complier -> Scala Compile Server -> JDK: 1.8
在build.gradle
compileScala.targetCompatibility = 1.8
ScalaCompileOptions.metaClass.useAnt = false
没有任何帮助!
更新:
这有助于:在 build.gradle
tasks.withType(ScalaCompile) {
scalaCompileOptions.useAnt = false
}
不需要:
compileScala.targetCompatibility = 1.8
ScalaCompileOptions.metaClass.useAnt = false
"Error:scalac: 'jvm-1.10' is not a valid choice for '-target' Error:scalac: bad option: '-target:jvm-1.10'"
- 在下面提到的JDK兼容性说明中,也表示
Java 10 不完全支持 Scala 2.12.6 JDK 9 & 10
兼容性说明
正如您所说的,您是通过 IntelliJ IDEA 构建的,我怀疑
你还没有配置你的 java 版本 (Java 10) 或 scala 版本
(2.12.6)里面运行配置项目settings.
另外请通过
试用building/compile您的应用程序
命令行以检查您是否遇到相同的错误
有了那个(否则这只是 IDEA 中的错误配置,你
需要改变)
JDK 9 和 10 兼容性说明(在 Scala 文档中提到)
JDK 9 & 10 兼容性说明
从 Scala 2.12.6 和 2.11.12 开始,JDK 9 & 10 支持不完整。值得注意的是,scalac 不会强制执行 Java 平台模块系统的限制,这意味着类型检查的代码可能会在运行时产生链接错误。
JDK 9 & 10 支持需要最低 sbt 版本 1.1.0,或 0.13.x 系列中的 0.13.17。
有关 JDK 9 和 10 兼容性的更多信息,请观看 GitHub 上的“支持 JDK 9”问题。
使用 java 11 和 scala 2.12.10 的混合多模块 gradle 项目可能会发生同样的问题。
在这种情况下,通过
重新配置 IntelliJ (2019.2) 可能会有所帮助
Settings
> Build, Execution, Deployment
> Scala Compiler
通过 删除在 Additional compiler options
中为受影响的 Scala 模块定义的目标。
我遇到与Java 11 相同的问题时偶然发现了这个问题。Roland Ewald 的重新配置评论解决了这个问题。值得一提的是,必须对项目的所有模块进行这种重新配置(至少对我来说这是必要的),而且 IntelliJ 有时会隐藏 Additional compiler options
的部分内容,因此请务必点击即使它们 看起来 是空的或正确的,也要展开。
在通过 Intellij Idea 构建时,我收到以下消息:
Error:scalac: 'jvm-1.10' is not a valid choice for '-target' Error:scalac: bad option: '-target:jvm-1.10'
稍后,在 Java 升级后
Build, Execution, Deployment -> Build Tools -> Gradle -> Gradle JVM: 1.8 Build, Execution, Deployment -> Complier -> Scala Complier -> Scala Compile Server -> JDK: 1.8
在build.gradle
compileScala.targetCompatibility = 1.8
ScalaCompileOptions.metaClass.useAnt = false
没有任何帮助!
更新:
这有助于:在 build.gradle
tasks.withType(ScalaCompile) {
scalaCompileOptions.useAnt = false
}
不需要:
compileScala.targetCompatibility = 1.8
ScalaCompileOptions.metaClass.useAnt = false
"Error:scalac: 'jvm-1.10' is not a valid choice for '-target' Error:scalac: bad option: '-target:jvm-1.10'"
- 在下面提到的JDK兼容性说明中,也表示 Java 10 不完全支持 Scala 2.12.6 JDK 9 & 10 兼容性说明
正如您所说的,您是通过 IntelliJ IDEA 构建的,我怀疑 你还没有配置你的 java 版本 (Java 10) 或 scala 版本 (2.12.6)里面运行配置项目settings.
另外请通过
试用building/compile您的应用程序 命令行以检查您是否遇到相同的错误 有了那个(否则这只是 IDEA 中的错误配置,你
需要改变)
JDK 9 和 10 兼容性说明(在 Scala 文档中提到)
JDK 9 & 10 兼容性说明 从 Scala 2.12.6 和 2.11.12 开始,JDK 9 & 10 支持不完整。值得注意的是,scalac 不会强制执行 Java 平台模块系统的限制,这意味着类型检查的代码可能会在运行时产生链接错误。
JDK 9 & 10 支持需要最低 sbt 版本 1.1.0,或 0.13.x 系列中的 0.13.17。
有关 JDK 9 和 10 兼容性的更多信息,请观看 GitHub 上的“支持 JDK 9”问题。
使用 java 11 和 scala 2.12.10 的混合多模块 gradle 项目可能会发生同样的问题。
在这种情况下,通过
重新配置 IntelliJ (2019.2) 可能会有所帮助Settings
> Build, Execution, Deployment
> Scala Compiler
通过 删除在 Additional compiler options
中为受影响的 Scala 模块定义的目标。
我遇到与Java 11 相同的问题时偶然发现了这个问题。Roland Ewald 的重新配置评论解决了这个问题。值得一提的是,必须对项目的所有模块进行这种重新配置(至少对我来说这是必要的),而且 IntelliJ 有时会隐藏 Additional compiler options
的部分内容,因此请务必点击即使它们 看起来 是空的或正确的,也要展开。