ソースがJava.nio.file
パッケージの新しいクラスを参照しているため、compile
タスクを実行するとコンパイルエラーが発生します。これは、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で正常に実行します。コンパイルにJava 7を使用するようにsbtを設定するにはどうすればよいですか?
JDK7フォルダー内のJava
を使用してSBTを開始する瞬間にこれを行う最も信頼できる(おそらく唯一の)方法。
sbt
ランチャースクリプトを変更します。または これ を使用すると、コマンドラインオプションとして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プロセスのコンパイルとフォークに使用されるバージョンが変更されますが、Javaの標準ライブラリのバージョンは変更されませんクラスパス、またはテストの実行に使用されるバージョン。これらは常にSBTと同じJVMを実行します。
LinuxまたはMacを使用している場合、別の可能性として、コマンドラインJava managerである jenv を参照することです。
JDKを使用するプロジェクトごとに選択できます。
私はあなたがデフォルトでJava_HOMEに設定したものを変更したいと仮定しています、それはsbtを呼び出すときに行うことができます:
Java_HOME=<path-to-jdk-home> sbt
これは、sbt 0.13.8がインストールされたOSXで動作します
私はvirtualenvを使用します。これは、Pythonエコシステムからのツールです。簡単に言えば、シェルスクリプトです。必要に応じて、PATH変数を簡単に変更し、以前の状態に戻すことができます。
最初にvirtualenvwrapperをインストールします(virtualenvのラッパー):
$ apt-get install virtualenvwrapper
次に、たとえばScala-2.11でJava8の仮想環境を作成します。
$ mkvirtualenv j8s11
次に、〜/ .virtualenvs/j8s11/bin/postactivateを調整して、すべてのツールの場所を定義します。あなたは私のために働く以下の例を見ることができます:
#!/ 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} エクスポートSCALA_HOME = $ {TOOLS_HOME}/scala-$ {SCALA_VERSION} エクスポート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-$ {ACTIVATOR_VERSION} export IDEA_HOME = $ {TOOLS_HOME}/idea-$ {IDEA_VERSION} エクスポート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 エクスポートパス
rgomes @ terra:〜$ workon j8s11 (j8s11)rgomes @ terra:〜$ Java -version Javaバージョン "1.8.0_31" Java(TM)SEランタイム環境(ビルド1.8.0_31-b13) Java HotSpot(TM)64ビットサーバーVM= (ビルド25.31-b07、混合モード) (j8s11)rgomes @ terra:〜$ scala -version Scalaコードランナーバージョン2.11.5-著作権2002-2013、LAMP/EPFL (j8s11)rgomes @ terra:〜$ workon j7s10 (j7s10)rgomes @ terra:〜$ Java -version Javaバージョン "1.7.0_71" Java(TM)SEランタイム環境(ビルド1.7.0_71-b14) Java HotSpot(TM )64ビットサーバーVM(ビルド24.71-b01、混合モード) (j7s10)rgomes @ terra:〜$ scala -version Scalaコードランナーバージョン2.10.4-Copyright 2002-2013、LAMP/EPFL