'jvm-1.8'不是'-target'的有效选择

Jen*_*der 16 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'
Run Code Online (Sandbox Code Playgroud)

但是'gradlew clean install'工作得很好.

项目设置是:

gradle版本2.3

scala 2.10和java

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

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

Boh*_*nik 10

在Intellij IDEA(15 CE)中添加此scalac编译器选项:

构建,执行,部署 - > 编译器 - > Scala编译器 - >默认

其他编译器选项 :( -target:jvm-1.7为空).

还有配置文件Gradle 1,... with -target:jvm-1.8,所以我也将它们更改为-target:jvm-1.7.

我正在使用Scala 2.10,JVM 1.8,源兼容性1.7.它对我的情况有帮助.


ell*_*hns 9

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

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

详情请访问:https://docs.gradle.org/4.2.1/userguide/scala_plugin.html#ideaTargetVersionhttps://www.jetbrains.com/help/idea/gradle.html

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


小智 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
    }
Run Code Online (Sandbox Code Playgroud)

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

  • 嗯,gradle构建实际上是有效的,只有在intellij里面我才能看到这个问题.好吧,我将升级scala版本,看看会发生什么. (3认同)

Yev*_*sik 5

多年来,我一直在寻找一种解决方案,最后找到了它-与其他阅读本文档的人共享。

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

subprojects {
    tasks.withType(ScalaCompile) {
        sourceCompatibility = "1.7"
        targetCompatibility = "1.7"
    }
}
Run Code Online (Sandbox Code Playgroud)