'jvm-1.8' 不是“-target”的有效选择
'jvm-1.8' is not a valid choice for '-target'
当我尝试制作我的项目时,IntelliJ 抱怨出现以下异常。
Error:scalac: 'jvm-1.8' is not a valid choice for '-target'
Error:scalac: bad option: '-target:jvm-1.8'
但是 'gradlew clean install' 工作得很好。
项目设置为:
gradle 版本 2.3
scala 2.10 和 java
4 个模块中的 3 个使用 java 1.7(源和目标兼容性),第 4 个模块具有源和目标兼容性 1.8 并导致问题。
有什么办法可以避免该错误吗? (移动到 java 7 不是一个选项,升级 scala 是)
Gradle 默认使用 ant 任务构建 Scala 代码,https://issues.scala-lang.org/browse/SI-8966 表明直到 Scala 2.11.5 才将 jvm 1.8 添加为受支持的目标。
您可以通过添加以下 gradle 构建文件来尝试使用基于 Zinc 的编译器。
tasks.withType(ScalaCompile) {
scalaCompileOptions.useAnt = false
}
您可能还需要将 zinc 编译器添加到依赖项列表中。
我一直在寻找解决这个问题的方法,终于找到了 - 与其他阅读本文的人分享。
取自:https://devnet.jetbrains.com/message/5523902
subprojects {
tasks.withType(ScalaCompile) {
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
}
}
在 Intellij IDEA (15 CE) 中添加此 scalac 编译器选项:
构建、执行、部署 -> 编译器 -> Scala 编译器 -> 默认
其他编译器选项:-target:jvm-1.7
(为空)。
还有配置文件 Gradle 1,... -target:jvm-1.8
,所以我也将它们更改为 -target:jvm-1.7
。
我正在使用 Scala 2.10、JVM 1.8、源兼容性 1.7。它对我的情况有所帮助。
如果您使用 JDK 1.8 作为 IntelliJ 项目 SDK,则默认项目语言级别和源兼容性可能默认设置为版本 8。这也将反映在 IntelliJ 的 Scala 编译器设置中。
要覆盖默认的 Java 8 语言级别,我只需要将以下内容添加到我的 build.gradle
:
sourceCompatibility = 1.7
完成后,让 IntelliJ IDEA 再次导入 Gradle 项目。然后,您应该通过检查以下项来确认更改已被 IntelliJ 接受:Settings -> Build, Execution, Deployment -> Compiler -> Scala Compiler
查看列出的每个模块的 其他编译器选项 字段,确保它包含 -target:jvm-1.7
,而不是 -target:jvm-1.8
。
在 Project Settings -> Modules 下,您应该会看到 Language Level 现在设置为 7 也是。
N.B。在 Gradle 属性 allprojects
、subprojects
下设置 sourceCompatibility
属性 或使用 tasks.withType(ScalaCompile)
对我不起作用;必须单独指定才能拾取。
(使用 IntelliJ IDEA 2017.2.3、Gradle 4.1、Gradle Scala 插件和 Scala 2.10 版对我有用)
我使用带 JRE 1.8.0、scala 2.10.5 和 gradle 3.3 的 IntelliJ 2017.2.5 收到了相同的错误消息。我通过选中位于
的 IntelliJ IDE 中的 "Delegate IDE build/run actions to gradle" 复选框解决了我的问题
设置>构建、执行、部署>构建工具>Gradle>运行器
可在此处找到详细信息:https://docs.gradle.org/4.2.1/userguide/scala_plugin.html#ideaTargetVersion and https://www.jetbrains.com/help/idea/gradle.html
值得注意的是,我能够在 IntelliJ(即 cmd 行)之外构建我的 gradle 项目,并且仅在尝试使用 IntelliJ IDE.[=11= 构建时收到此错误]
就我而言,我已通过消除 POM 中提到的 scala-sdk 与导入全局库之间的冲突来解决。
检查 pom.xml 中的 scala-sdk 版本,并检查您添加的全局库 scala-sdk。它应该是一样的。
从@Alan Effrig 的回答中添加。
直到 Scala 2.11.5 才将 JVM 1.8 添加为受支持的目标。
在我的IDE中,Scala版本选择为2.11.0,更新到最新的2.11.12解决了这个问题。
当我尝试制作我的项目时,IntelliJ 抱怨出现以下异常。
Error:scalac: 'jvm-1.8' is not a valid choice for '-target'
Error:scalac: bad option: '-target:jvm-1.8'
但是 'gradlew clean install' 工作得很好。
项目设置为:
gradle 版本 2.3
scala 2.10 和 java
4 个模块中的 3 个使用 java 1.7(源和目标兼容性),第 4 个模块具有源和目标兼容性 1.8 并导致问题。
有什么办法可以避免该错误吗? (移动到 java 7 不是一个选项,升级 scala 是)
Gradle 默认使用 ant 任务构建 Scala 代码,https://issues.scala-lang.org/browse/SI-8966 表明直到 Scala 2.11.5 才将 jvm 1.8 添加为受支持的目标。
您可以通过添加以下 gradle 构建文件来尝试使用基于 Zinc 的编译器。
tasks.withType(ScalaCompile) {
scalaCompileOptions.useAnt = false
}
您可能还需要将 zinc 编译器添加到依赖项列表中。
我一直在寻找解决这个问题的方法,终于找到了 - 与其他阅读本文的人分享。
取自:https://devnet.jetbrains.com/message/5523902
subprojects {
tasks.withType(ScalaCompile) {
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
}
}
在 Intellij IDEA (15 CE) 中添加此 scalac 编译器选项:
构建、执行、部署 -> 编译器 -> Scala 编译器 -> 默认
其他编译器选项:-target:jvm-1.7
(为空)。
还有配置文件 Gradle 1,... -target:jvm-1.8
,所以我也将它们更改为 -target:jvm-1.7
。
我正在使用 Scala 2.10、JVM 1.8、源兼容性 1.7。它对我的情况有所帮助。
如果您使用 JDK 1.8 作为 IntelliJ 项目 SDK,则默认项目语言级别和源兼容性可能默认设置为版本 8。这也将反映在 IntelliJ 的 Scala 编译器设置中。
要覆盖默认的 Java 8 语言级别,我只需要将以下内容添加到我的 build.gradle
:
sourceCompatibility = 1.7
完成后,让 IntelliJ IDEA 再次导入 Gradle 项目。然后,您应该通过检查以下项来确认更改已被 IntelliJ 接受:Settings -> Build, Execution, Deployment -> Compiler -> Scala Compiler
查看列出的每个模块的 其他编译器选项 字段,确保它包含 -target:jvm-1.7
,而不是 -target:jvm-1.8
。
在 Project Settings -> Modules 下,您应该会看到 Language Level 现在设置为 7 也是。
N.B。在 Gradle 属性 allprojects
、subprojects
下设置 sourceCompatibility
属性 或使用 tasks.withType(ScalaCompile)
对我不起作用;必须单独指定才能拾取。
(使用 IntelliJ IDEA 2017.2.3、Gradle 4.1、Gradle Scala 插件和 Scala 2.10 版对我有用)
我使用带 JRE 1.8.0、scala 2.10.5 和 gradle 3.3 的 IntelliJ 2017.2.5 收到了相同的错误消息。我通过选中位于
的 IntelliJ IDE 中的 "Delegate IDE build/run actions to gradle" 复选框解决了我的问题设置>构建、执行、部署>构建工具>Gradle>运行器
可在此处找到详细信息:https://docs.gradle.org/4.2.1/userguide/scala_plugin.html#ideaTargetVersion and https://www.jetbrains.com/help/idea/gradle.html
值得注意的是,我能够在 IntelliJ(即 cmd 行)之外构建我的 gradle 项目,并且仅在尝试使用 IntelliJ IDE.[=11= 构建时收到此错误]
就我而言,我已通过消除 POM 中提到的 scala-sdk 与导入全局库之间的冲突来解决。
检查 pom.xml 中的 scala-sdk 版本,并检查您添加的全局库 scala-sdk。它应该是一样的。
从@Alan Effrig 的回答中添加。 直到 Scala 2.11.5 才将 JVM 1.8 添加为受支持的目标。
在我的IDE中,Scala版本选择为2.11.0,更新到最新的2.11.12解决了这个问题。