mac - scala ide
¿Configurando sbt para usar Java 7 para compilación? (5)
¿Cambiar javacOption a 1.7? No creo que configurar JavaHome sea necesario.
Obtengo errores de compilación al ejecutar la tarea de compile
cuando las fuentes hacen referencia a nuevas clases en el paquete java.nio.file
que solo apareció en Java 7.
Tengo lo siguiente 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)
Se compila y funciona bien en Eclipse. ¿Cómo puedo configurar sbt para usar Java 7 para compilación?
La forma más confiable (quizás única) de hacerlo en el momento en que se inicia SBT con java
en la carpeta JDK7.
Modifica tu sbt
comandos sbt
launcher; o use este que le permite especificar Java Home (¡y mucho más!) como opciones de línea de comando.
~/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
Simplemente configurando javaHome := Some(file("/Library/Java/JavaVirtualMachines/openjdk-1.7-x86_64/Contents/Home"))
cambia la versión de Java utilizada para compilar y bifurcar procesos, pero no cambia la versión del estándar de Java biblioteca en classpath, ni la versión utilizada para ejecutar pruebas, que siempre se ejecutan con la misma JVM que SBT.
Si usa Linux o Mac, otra posibilidad es mirar a jenv , un administrador de Java de línea de comando.
Le permite elegir por proyecto qué JDK usar.
Supongo que desea cambiar lo que haya configurado en JAVA_HOME de forma predeterminada, lo que puede hacer al invocar sbt:
JAVA_HOME=<path-to-jdk-home> sbt
Esto funciona para mí en OSX con sbt 0.13.8
Utilizo virtualenv , que es una herramienta del ecosistema de Python. En pocas palabras, es un script de shell que le permite cambiar fácilmente su variable PATH y volver a lo que era antes, si es necesario.
Primero instale virtualenvwrapper (un envoltorio alrededor de virtualenv ):
$ apt-get install virtualenvwrapper
Ahora crea un entorno virtual para, digamos, Java8 con Scala-2.11.
$ mkvirtualenv j8s11
Ahora, ajuste ~ / .virtualenvs / j8s11 / bin / postactivate para que pueda definir ubicaciones para todas sus herramientas. Puedes ver un ejemplo a continuación que funciona para mí:
#!/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} export ACTIVATOR_HOME=${TOOLS_HOME}/activator-${ACTIVATOR_VERSION} export IDEA_HOME=${TOOLS_HOME}/idea-${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 export PATH
- Ahora puedes usar workon para cambiar de entorno. Ejemplo:
rgomes@terra:~$ workon j8s11 (j8s11)rgomes@terra:~$ java -version java version "1.8.0_31" Java(TM) SE Runtime Environment (build 1.8.0_31-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode) (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 -version java version "1.7.0_71" Java(TM) SE Runtime Environment (build 1.7.0_71-b14) Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode) (j7s10)rgomes@terra:~$ scala -version Scala code runner version 2.10.4 -- Copyright 2002-2013, LAMP/EPFL