'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'
Но "градирня чистая установка" работает отлично.
Настройка проекта:
gradle версия 2.3
scala 2.10 и java
3 из 4 модулей используют java 1.7 (совместимость источника и цели), 4-й модуль имеет исходную и целевую совместимость 1.8 и вызывает проблему.
Любые идеи, как я могу избежать ошибки? (переход на java 7 не вариант, обновление scala есть)
Ответы
Ответ 1
Gradle по умолчанию используйте задачу ant для создания кода Scala, а https://issues.scala-lang.org/browse/SI-8966 показывает, что jvm 1.8 не был добавляется в качестве поддерживаемой цели до Scala 2.11.5.
Вы можете попробовать использовать компилятор на основе цинка, добавив следующий файл сборки gradle.
tasks.withType(ScalaCompile) {
scalaCompileOptions.useAnt = false
}
Вам также может потребоваться добавить цинковый компилятор в список зависимостей.
Ответ 2
В 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. Это помогло мне в моем случае.
Ответ 3
Я получил то же сообщение об ошибке, используя IntelliJ 2017.2.5 с JRE 1.8.0, scala 2.10.5 и gradle 3.3. Я решил свою проблему, установив флажок "Делегировать IDE для сборки/запуска действий для захвата" в IntelliJ IDE, расположенной по адресу
Настройки> Сборка, выполнение, развертывание> Инструменты сборки> Gradle> Runner
Подробности можно найти здесь: https://docs.gradle.org/4.2.1/userguide/scala_plugin.html#ideaTargetVersion и https://www.jetbrains.com/help/idea/gradle.html.
Следует отметить, что я смог построить свой gradle-проект вне IntelliJ (т.е. строки cmd) и получил эту ошибку только при попытке выполнить сборку с использованием IntelliJ IDE.
Ответ 4
Я искал решение для этого целую вечность, наконец нашел его - делиться для всех, кто читает это.
Взято из: https://devnet.jetbrains.com/message/5523902
subprojects {
tasks.withType(ScalaCompile) {
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
}
}
Ответ 5
Если вы используете JDK 1.8 в качестве SDK IntelliJ Project, то по умолчанию уровень языка проекта и совместимость с исходным кодом могут быть установлены на версию 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. Установка свойства sourceCompatibility
в свойствах Gradle allprojects
, subprojects
или использовании tasks.withType(ScalaCompile)
не работала для меня; его нужно было указать отдельно, чтобы его подхватили.
(Это работало для меня с использованием IntelliJ IDEA 2017.2.3, Gradle 4.1, плагина Gradle Scala и Scala версии 2.10)
Ответ 6
Используйте
compile 'org.scala-lang:scala-library:2.10.7'
для решения проблемы,
В версии 2.10.7 Scala добавлена поддержка 1.8.
https://github.com/scala/scala/commit/69b79ba971ae1c8415da372432f55368617d1f2d
IntelliJ компилирует все без каких-либо изменений/взломов.
Ответ 7
С этим ./ide_configs/intellij/update_config.sh
при запуске тестов сразу после использования ./ide_configs/intellij/update_config.sh
для обновления настроек вкладки. Я смог решить проблему, снова настроив тестер Gradle.