Настройка sbt для использования Java 7 для компиляции?

Я получаю ошибки компиляции при запуске задачи compile поскольку источники ссылаются на новые classы в пакете java.nio.file , которые появились только в Java 7.

У меня есть следующее в build.sbt :

 javaHome := Some(file("/opt/jdk/jdk1.7.0")) fork := true 

В sbt:

 > show java-home [info] Some(/opt/jdk/jdk1.7.0) 

Он компилируется и отлично работает в Eclipse. Как я могу настроить sbt для использования Java 7 для компиляции?

Самый надежный (возможно, единственный) способ сделать это в тот момент, когда он запускает SBT с java в папке JDK7.

Измените sbt launcher; или использовать этот, который позволяет вам указать Java Home (и многое другое!) в качестве параметров командной строки.

 ~/code/scratch/20111009 sbt -java-home /Library/Java/JavaVirtualMachines/openjdk-1.7-x86_64/Contents/Home Starting sbt: invoke with -help for other options [info] Loading global plugins from /Users/jason/.sbt/plugins [info] Set current project to default-3e990a (in build file:/Users/jason/code/scratch/20111009/) > console [info] Compiling 1 Scala source to /Users/jason/code/scratch/20111009/target/scala-2.9.1/classes... [info] Starting scala interpreter... [info] Welcome to Scala version 2.9.1.final (OpenJDK 64-Bit Server VM, Java 1.7.0-internal). Type in expressions to have them evaluated. Type :help for more information. scala> java.util.Objects.equals(null, null) res0: Boolean = true 

Просто установка javaHome := Some(file("/Library/Java/JavaVirtualMachines/openjdk-1.7-x86_64/Contents/Home")) изменяет версию Java, используемую для компиляции и fork-процессов, но не меняет версию стандарта Java библиотека на пути к classам или версия, используемая для запуска тестов, которые всегда запускают одну и ту же JVM как SBT.

Если вы используете Linux или Mac, другая возможность – посмотреть jenv , диспетчер Java-команд командной строки.

Это позволяет вам выбирать один проект, который должен использовать JDK.

Я использую virtualenv , который является инструментом экосистемы Python. В двух словах, это скрипт оболочки, который позволяет вам легко изменять вашу переменную PATH и возвращаться к тому, что было раньше, если вам нужно.

  1. Сначала установите virtualenvwrapper (обертка вокруг virtualenv ):

    $ apt-get install virtualenvwrapper

  2. Теперь создайте виртуальную среду, например, для Java8 с Scala-2.11.

    $ mkvirtualenv j8s11

  3. Теперь отрегулируйте ~ / .virtualenvs / j8s11 / bin / postactivate, чтобы определить местоположения для всех ваших инструментов. Ниже приведен пример, который работает для меня:

 #! / Bin / Баш

 JAVA_VERSION = 1.8.0_31
 SCALA_VERSION = 2.11.5
 SBT_VERSION = 0.13.7
 ANT_VERSION = 1.9.4
 M2_VERSION = 3.2.5
 GRADLE_VERSION = 1,6
 PLAY_VERSION = 2.3.7
 ACTIVATOR_VERSION = 1.2.12
 IDEA_VERSION = IC-135,475
 PYCHARM_VERSION = сообщества 3.4.1

 TOOLS_HOME = / опт / разработчик
 export JAVA_HOME = $ {TOOLS_HOME} / jdk $ {JAVA_VERSION}
 export SCALA_HOME = $ {TOOLS_HOME} / scala - $ {SCALA_VERSION}
 export SBT_HOME = $ {TOOLS_HOME} / sbt - $ {SBT_VERSION}
 экспорт ANT_HOME = $ {TOOLS_HOME} / apache-ant - $ {ANT_VERSION}
 export M2_HOME = $ {TOOLS_HOME} / apache-maven - $ {M2_VERSION}
 export GRADLE_HOME = $ {TOOLS_HOME} / gradle - $ {GRADLE_VERSION}
 export PLAY_HOME = $ {TOOLS_HOME} / play - $ {PLAY_VERSION}
 export ACTIVATOR_HOME = $ {TOOLS_HOME} / активатор - $ {ACTIVATOR_VERSION}
 export IDEA_HOME = $ {TOOLS_HOME} / idea - $ {IDEA_VERSION}
 export PYCHARM_HOME = $ {TOOLS_HOME} / pycharm - $ {PYCHARM_VERSION}

 PATH = $ {PYCHARM_HOME} / бен: $ PATH
 PATH = $ {IDEA_HOME} / бен: $ PATH
 PATH = $ {ACTIVATOR_HOME}: $ PATH
 PATH = $ {PLAY_HOME}: $ PATH
 PATH = $ {GRADLE_HOME} / бен: $ PATH
 PATH = $ {M2_HOME} / бен: $ PATH
 PATH = $ {ANT_HOME} / бен: $ PATH
 PATH = $ {SBT_HOME} / бен: $ PATH
 PATH = $ {SCALA_HOME} / бен: $ PATH
 PATH = $ {JAVA_HOME} / бен: $ PATH
 экспорт PATH
  1. Теперь вы можете просто использовать workon для переключения между средами. Пример:
 rgomes @ terra: ~ $ workon j8s11

 (j8s11) rgomes @ terra: ~ $ java -версия
 java-версия "1.8.0_31"
 Java (TM) SE Runtime Environment (assembly 1.8.0_31-b13)
 Java HotSpot (TM) 64-разрядная серверная VM (assembly 25.31-b07, смешанный режим)
 (j8s11) rgomes @ terra: ~ $ scala -version
 Scala code runner version 2.11.5 - Copyright 2002-2013, LAMP / EPFL

 (j8s11) rgomes @ terra: ~ $ workon j7s10

 (j7s10) rgomes @ terra: ~ $ java -версия
 java-версия "1.7.0_71"
 Java (TM) SE Runtime Environment (assembly 1.7.0_71-b14)
 Java HotSpot (TM) 64-разрядная серверная VM (assembly 24.71-b01, смешанный режим)
 (j7s10) rgomes @ terra: ~ $ scala -version
 Scala code runner version 2.10.4 - Copyright 2002-2013, LAMP / EPFL

Я предполагаю, что вы хотите поменять все, что вы установили в JAVA_HOME по умолчанию, что вы можете сделать при вызове sbt:

 JAVA_HOME= sbt 

Это работает для меня на OSX с sbt 0.13.8

изменить javacOption до 1.7? Я не думаю, что настройка javaHome необходима.

  • Оператор Scala @
  • Нет Json-сериализатора как JsObject для типа play.api.libs.json.JsObject
  • Что означают <: <, <% <, и =: = mean в Scala 2.8, и где они задокументированы?
  • Как передать параметр -D или переменную среды в Spark?
  • Как определить схему для настраиваемого типа в Spark SQL?
  • Как получить последнюю дату определенного месяца с помощью JodaTime?
  • Удаление вложенного столбца из Spark DataFrame
  • Могут ли мультипроекты из GIT использоваться в качестве зависимостей SBT?
  • Получить измененный контент HTML после его обновления Javascript? (HtmlUnit)
  • Spark 2.0 Dataset против DataFrame
  • Как определить пользовательский разделитель для Spark RDD с одинаковым размером раздела, где каждый раздел имеет одинаковое количество элементов?
  • Давайте будем гением компьютера.