42 votes

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 compile car les sources font référence à de nouvelles classes dans le package java.nio.file qui n'apparaissaient qu'en Java 7.

J'ai les éléments suivants en build.sbt :

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

fork := true
 

En sbt:

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

Il se compile et fonctionne correctement dans Eclipse. Comment puis-je configurer sbt pour utiliser Java 7 pour la compilation?

46voto

retronym Points 35066

La plus fiable (peut-être la seule) façon de le faire au moment où il pour commencer à SBT avec java dans le JDK7 dossier.

Modifier votre sbt script de lancement; ou l'utilisation de ce un qui vous permet de spécifier Java à la Maison (et plus!) que les 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

Simplement paramètre javaHome := Some(file("/Library/Java/JavaVirtualMachines/openjdk-1.7-x86_64/Contents/Home")) changements de la version de Java utilisée pour la compilation et la fourche processus, mais ne change pas la version de la norme Java bibliothèque sur le chemin de la classe, ni la version utilisée pour exécuter les tests, qui sont toujours exécuter le même JVM que SBT.

4voto

Si vous utilisez Linux ou Mac, une autre possibilité est de regarder jenv , un gestionnaire Java en ligne de commande.

Il vous permet de choisir par projet le JDK à utiliser.

-2voto

DarrenWang Points 400

changer javacOption en 1.7? Je ne pense pas que la configuration de javaHome soit nécessaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X