web-dev-qa-db-ja.com

「jvm-1.8」は「-target」の有効な選択ではありません

IntelliJは、プロジェクトを作成しようとすると、次の例外で文句を言います。

Error:scalac: 'jvm-1.8' is not a valid choice for '-target'
Error:scalac: bad option: '-target:jvm-1.8'

しかし、「gradlewcleaninstall」は問題なく機能します。

プロジェクトの設定は次のとおりです。

gradleバージョン2.3

scala2.10とJava

4つのモジュールのうち3つはJava 1.7(ソースとターゲットの互換性))を使用し、4番目のモジュールはソースとターゲットの互換性1.8を使用しており、問題を引き起こしています。

エラーを回避する方法はありますか? (Java 7に移動することはオプションではありません、アップグレードscala is)

17
Jens Schauder

Gradleはデフォルトでantタスクを使用してScalaコードをビルドし、 https://issues.scala-lang.org/browse/SI-8966 はjvm1.8を示していますScala 2.11.5まで、サポートされるターゲットとして追加されませんでした。

次のgradleビルドファイルを追加することで、でZincベースのコンパイラを使用してみることができます。

    tasks.withType(ScalaCompile) {
      scalaCompileOptions.useAnt = false
    }

依存関係リストにzincコンパイラを追加する必要がある場合もあります。

7
Alan Effrig

Intellij IDEA(15 CE)で、次のscalacコンパイラオプションを追加します。

ビルド、実行、デプロイ-> コンパイラ-> Scalaコンパイラ->デフォルト

追加のコンパイラオプション-target:jvm-1.7(空でした)。

-target:jvm-1.8のプロファイルGradle1、...もあったので、それらも-target:jvm-1.7に変更しました。

私はScala 2.10、JVM 1.8、ソース互換性1.7を使用しています。私の場合は役に立ちました。

11

IntelliJ 2017.2.5 w/JRE 1.8.0、scala 2.10.5、およびgradle3.3を使用しても同じエラーメッセージが表示されました。 IntelliJのIDEにある[DelegateIDE build/run action togradle]チェックボックスをオンにして問題を解決しました

[設定]> [ビルド]、[実行]、[展開]> [ビルドツール]> [Gradle]> [ランナー]

詳細はここにあります: https://docs.gradle.org/4.2.1/userguide/scala_plugin.html#ideaTargetVersion および https://www.jetbrains.com/help /idea/gradle.html

注目すべきことに、IntelliJの外部(つまり、cmd行)でgradleプロジェクトをビルドできましたが、IntelliJIDEを使用してビルドしようとしたときにのみこのエラーが発生しました。

9
ellisbjohns

私は何年もの間これの解決策を探していましたが、ついにそれを見つけました-これを読んでいる他の人と共有します。

取得元: https://devnet.jetbrains.com/message/5523902

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

IntelliJ ProjectSDKとしてJDK1.8を使用している場合、デフォルトのプロジェクト言語レベルとソースの互換性は、デフォルトでバージョン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を使用して機能しました)

1
sversch