Configurer sbt pour utiliser Java 7 pour la compilation?

Je reçois des erreurs de compilation lors de l’exécution de la tâche de comstack car les sources font référence à de nouvelles classes dans le package java.nio.file qui n’apparaissent que dans Java 7.

J’ai les éléments suivants dans build.sbt :

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

Dans sbt:

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

Il comstack et fonctionne bien dans Eclipse. Comment puis-je configurer sbt pour utiliser Java 7 pour la compilation?

Le moyen le plus fiable (peut-être le seul) de le faire est de démarrer SBT avec java dans le dossier JDK7.

Modifiez votre script de lancement de sbt ; ou utilisez celui-ci qui vous permet de spécifier Java Home (et bien plus encore!) comme options de ligne de commande.

 ~/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 

Il suffit de définir javaHome := Some(file("/Library/Java/JavaVirtualMachines/openjdk-1.7-x86_64/Contents/Home")) modifie la version de Java utilisée pour comstackr et traiter les processus, mais ne modifie pas la version du standard Java bibliothèque sur le chemin de classe, ni la version utilisée pour exécuter des tests, qui exécutent toujours le même JVM que SBT.

Si vous utilisez Linux ou Mac, vous pouvez également consulter jenv , un gestionnaire de ligne de commande Java.

Il vous permet de choisir par projet quel JDK utiliser.

J’utilise virtualenv , un outil de l’écosystème Python. En bref, il s’agit d’un script shell qui vous permet de modifier facilement votre variable PATH et de revenir à ce qu’elle était auparavant, si nécessaire.

  1. Installez d’abord virtualenvwrapper (une enveloppe autour de virtualenv ):

    $ apt-get install virtualenvwrapper

  2. Créez maintenant un environnement virtuel pour, par exemple, Java8 avec Scala-2.11.

    $ mkvirtualenv j8s11

  3. Ajustez maintenant ~ / .virtualenvs / j8s11 / bin / postactivate pour définir des emplacements pour tous vos outils. Vous pouvez voir un exemple ci-dessous qui fonctionne pour moi:

 #! / bin / bash

 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 = community-3.4.1

 TOOLS_HOME = / opt / developer
 export JAVA_HOME = $ {TOOLS_HOME} / jdk $ {JAVA_VERSION}
 export SCALA_HOME = $ {TOOLS_HOME} / scala - $ {SCALA_VERSION}
 export SBT_HOME = $ {TOOLS_HOME} / sbt - $ {SBT_VERSION}
 export 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}
 exporter ACTIVATOR_HOME = $ {TOOLS_HOME} / activator - $ {ACTIVATOR_VERSION}
 export IDEA_HOME = $ {TOOLS_HOME} / idée - $ {IDEA_VERSION}
 export PYCHARM_HOME = $ {TOOLS_HOME} / pycharm - $ {PYCHARM_VERSION}

 PATH = $ {PYCHARM_HOME} / bin: $ PATH
 PATH = $ {IDEA_HOME} / bin: $ PATH
 PATH = $ {ACTIVATOR_HOME}: $ PATH
 PATH = $ {PLAY_HOME}: $ PATH
 PATH = $ {GRADLE_HOME} / bin: $ PATH
 PATH = $ {M2_HOME} / bin: $ PATH
 PATH = $ {ANT_HOME} / bin: $ PATH
 PATH = $ {SBT_HOME} / bin: $ PATH
 PATH = $ {SCALA_HOME} / bin: $ PATH
 PATH = $ {JAVA_HOME} / bin: $ PATH
 exporter PATH
  1. Maintenant, vous pouvez simplement utiliser workon pour basculer entre les environnements. Exemple:
 rgomes @ terra: ~ $ workon j8s11

 (j8s11) Résultats @ terra: ~ $ java -version
 version java "1.8.0_31"
 Environnement d'exécution Java (TM) SE (version 1.8.0_31-b13)
 VM serveur Java HotSpot (64 bits) (version 25.31-b07, mode mixte)
 (j8s11) Résultats @ terra: ~ $ scala -version
 Scala code runner version 2.11.5 - Copyright 2002-2013, LAMP / EPFL

 (j8s11) Résultats @ terra: ~ $ workon j7s10

 (j7s10) rgomes @ terra: ~ $ java -version
 version java "1.7.0_71"
 Java (TM) SE Runtime Environment (version 1.7.0_71-b14)
 VM serveur Java HotSpot (64 bits) (version 24.71-b01, mode mixte)
 (j7s10) rgomes @ terra: ~ $ scala -version
 Scala code runner version 2.10.4 - Copyright 2002-2013, LAMP / EPFL

Je suppose que vous voulez modifier ce que vous avez défini dans JAVA_HOME par défaut, ce que vous pouvez faire en appelant sbt:

 JAVA_HOME= sbt 

Cela fonctionne pour moi sur OSX avec sbt 0.13.8

changer javacOption à 1.7? Je ne pense pas que définir le javaHome soit nécessaire.