2011-10-09 26 views
37

compile görevini çalıştırırken derleme hataları alıyorum java.nio.file paketinde yalnızca Java 7'de görünen yeni sınıf referansları.Derleme için Java 7'yi kullanmak için sbt kurmak?

Aşağıdaki build.sbt:

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

fork := true 

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

Eclipse'de derler ve çalışır. Derleme için Java 7'yi kullanmak için sbt'yi nasıl kurabilirim?

cevap

44

JDK7 klasöründe java ile SBT'yi başlattığı anda bunu yapmanın en güvenilir (belki de sadece) yolu.

sbt başlatıcısı komut dosyasını değiştirin; veya Java Home'u (ve daha fazlasını!) komut satırı seçenekleri olarak belirlemenizi sağlayan this one kullanın. Basitçe javaHome := Some(file("/Library/Java/JavaVirtualMachines/openjdk-1.7-x86_64/Contents/Home")) ayarı

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

çatal süreçleri derleyip için kullanılan Java sürümünü değiştirir, ancak üzerinde sınıf Java standart kütüphanenin sürümü değişmez, ne sürümü çalıştırmak her zaman testleri çalıştırmak için kullanılan SBT ile aynı JVM.

+0

'windows10' ve' sbt-0.13'de şunu yaptım: cmd/C "set JAVA_HOME = c: \ apps \ jdk1.7.0_80 && sbt" '. JAVA_HOME değişkenini etkileyeceğinden && 'den önce boşluk eklemeyin. – raisercostin

-2

javacOption değerini 1.7 olarak değiştirebilir misiniz? Ben javaHome gerekli olduğunu düşünmüyorum.

4

Linux veya Mac kullanıyorsanız, başka bir olasılık da bir Java yöneticisi komut satırı olan jenv'a bakmaktır.

Kullanılacak JDK projesini seçmenize izin verir.

+0

Bağlantı https://github.com/gcuisinier/jenv – Tvaroh

+0

olmalı – nafg

3

Python ekosisteminden bir araç olan virtualenv kullanıyorum. Özetle, PATH değişkeninizi kolayca değiştirmenize ve ihtiyacınız olana geri dönmenizi sağlayan bir kabuk betiğidir.

  1. İlk virtualenvwrapper (Virtualenv etrafında sarıcı) yükleyin:

    $ apt-get

  2. Şimdi Scala-2.11 ile Java8, diyelim ki, bir sanal ortam yaratmak virtualenvwrapper yükleyin.

    $ mkvirtualenv

  3. Şimdi, tüm araçlar için yer tanımlanıyor böylece ~/.virtualenvs/j8s11/bin/postactivate ayarlamak j8s11. Bir örneği aşağıda benim için çalışıyor görebilirsiniz:

 
#!/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 
  1. Şimdi sadece ortamları arasında geçiş yapmak workon kullanabilirsiniz.Örnek:
 
[email protected]:~$ workon j8s11 

(j8s11)[email protected]:~$ 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)[email protected]:~$ scala -version 
Scala code runner version 2.11.5 -- Copyright 2002-2013, LAMP/EPFL 

(j8s11)[email protected]:~$ workon j7s10 

(j7s10)[email protected]:~$ 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)[email protected]:~$ scala -version 
Scala code runner version 2.10.4 -- Copyright 2002-2013, LAMP/EPFL 
2

Ben size yürütmesini SBT yapabilirsiniz varsayılan olarak JAVA_HOME ayarladığınız olursa olsun değiştirmek istediğiniz farz ediyorum:

JAVA_HOME=<path-to-jdk-home> sbt 

Bu ile OSX'te benim için çalışıyor sbt 0.13.8

İlgili konular