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)
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コンパイラを追加する必要がある場合もあります。
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を使用しています。私の場合は役に立ちました。
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を使用してビルドしようとしたときにのみこのエラーが発生しました。
私は何年もの間これの解決策を探していましたが、ついにそれを見つけました-これを読んでいる他の人と共有します。
取得元: https://devnet.jetbrains.com/message/5523902
subprojects {
tasks.withType(ScalaCompile) {
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
}
}
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プロパティsourceCompatibility
、allprojects
の下にsubprojects
プロパティを設定するか、tasks.withType(ScalaCompile)
を使用しても機能しませんでした。ピックアップするには、個別に指定する必要がありました。
(これは、IntelliJ IDEA 2017.2.3、Gradle 4.1、Gradle ScalaプラグインおよびScalaバージョン2.10を使用して機能しました)