' JVM-1.8'对于' -target'不是一个有效的选择。

时间:2015-03-13 20:37:33

标签: java scala intellij-idea gradle java-8

当我尝试制作项目时,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 version 2.3

scala 2.10和java

4个模块中的3个使用java 1.7(源和目标兼容性),第4个模块具有源和目标兼容性1.8并导致问题。

我有什么想法可以避免错误吗? (移动到java 7不是一个选项,升级scala是)

7 个答案:

答案 0 :(得分:10)

在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。它对我有帮助。

答案 1 :(得分:7)

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
    }

您可能还需要将锌编译器添加到依赖项列表中。

答案 2 :(得分:7)

我使用IntelliJ 2017.2.5 w / JRE 1.8.0,scala 2.10.5和gradle 3.3得到了相同的错误消息。我通过检查"委托IDE构建/运行操作来解决我的问题#34; IntelliJ的IDE中的复选框位于

设置>构建,执行,部署>构建工具> Gradle>亚军

可在此处找到详细信息:https://docs.gradle.org/4.2.1/userguide/scala_plugin.html#ideaTargetVersionhttps://www.jetbrains.com/help/idea/gradle.html

值得注意的是,我能够在IntelliJ之外构建我的gradle项目(即cmd行),并且在尝试使用IntelliJ IDE构建时只收到此错误。

答案 3 :(得分:5)

我多年来一直在寻找解决方案,终于找到了 - 分享给其他读这篇文章的人。

取自:https://devnet.jetbrains.com/message/5523902

subprojects {
    tasks.withType(ScalaCompile) {
        sourceCompatibility = "1.7"
        targetCompatibility = "1.7"
    }
}

答案 4 :(得分:1)

如果您使用JDK 1.8作为IntelliJ Project SDK,则默认情况下默认项目语言级别和源兼容性可能设置为版本8。这也将反映在IntelliJ的Scala编译器设置中。

要覆盖默认的Java 8语言级别,我只需要将以下内容添加到build.gradle

sourceCompatibility = 1.7

执行此操作后,再次使IntelliJ IDEA导入Gradle项目。然后,您应该通过检查以下内容确认IntelliJ已选择更改:设置 - >构建,执行,部署 - >编译器 - > Scala编译器

查看列出的每个模块的附加编译器选项字段,确保它包含-target:jvm-1.7,而不是-target:jvm-1.8

项目设置下 - >模块,你应该看到语言水平现在也设置为 7

N.B。在Gradle属性sourceCompatibilityallprojects或使用subprojects下设置tasks.withType(ScalaCompile)属性对我不起作用;它必须单独指定才能被选中。

(这对我使用IntelliJ IDEA 2017.2.3,Gradle 4.1,Gradle Scala插件和Scala版本2.10)

答案 5 :(得分:0)

对于我来说,我已解决了以下问题:消除了POM中提到的scala-sdk与导入全局库之间的冲突。

检查pom.xml中的scala-sdk版本,并检查已添加的全局库scala-sdk。它应该是相同的。

答案 6 :(得分:0)

从@Alan Effrig的答案中添加。 直到Scala 2.11.5才将JVM 1.8添加为受支持的目标。

在我的IDE中,Scala版本被选择为2.11.0,将其更新为最新的2.11.12解决了该问题。