2009-03-29 27 views
12

Mac OS X上でJDK 1.6を使用してAntを実行する際に問題が発生しました。JavaアプリケーションのバージョンがOS XのJava PreferenceでJava SE 6に設定されていても、Terminalでjava -versionjava version "1.6.0_07" Antは、コードをコンパイルするときにJDK 1.6クラスが表示されないため、JDK 1.5を使用するためにJDK 1.5を使用しているようです。Mac OS X上でJDK 1.6を使用してAntを実行

私は、使用するJDKを指定するために、環境変数JAVA_HOMEに依存していることを理解します。しかし、私はこの変数をMac OS Xでどのように設定できるのかよく分かりません。JAVA_HOME環境を設定する正しい方法がまだ残っている場合は、AntをJDK 1.6で実行する方法を教えてください。変数、OS Xで変数を設定する方法

答えて

21

JAVA_HOME環境変数は、ホームディレクトリの.profileファイルに設定されています。 (/Users/ejel/.profile?)それを編集し、あなたが望むものに設定します。たとえば:

この時点以降、新しい端末ウィンドウを開くたびに、JAVA_HOMEにこの新しい値が設定されます。既存の開いているウィンドウは変更されません。

これをプロファイルに入れるのが非常に難しい場合や、他のソフトウェアと競合する場合は、端末で手動でエクスポート文を実行するか、実行されるスクリプト(setj6ev.shなど)に移動できます。 antタスクの実行を開始する前に

+0

提供されるソリューションは実際には単純で、機能します。しかし、Javaのホームディレクトリへの正しいパスは、/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home – ejel

+0

です。私の悪い、テストしなかった、修正します、thankx –

+0

理想的にはあなたが使用する必要があります.. ./Versions/Current/Homeのようにして、スクリプトを更新することなくVMを後で変更することができます。 - 例えば、/ Versions/CurrentJDK/Homeコンパイラ – AlBlue

2

.profile/.bashrc/.zshrcにJAVA_HOME変数を明示的に設定することは、実際にはMacで行うことをお勧めしません。私が見たプログラムは、明示的に設定されたJAVA_HOMEを特定のバージョン(grails 1.1といくつかのスプリングリソースなど)に移植したものです。

使用するJavaのバージョンを正しく設定するには、/ Application/Utilities/Java Preferences.appアプリケーションを使用します。

ここでは、使用するjavaのバージョンを上にドラッグします。これにより、すべてのアプリケーション(コマンドラインから実行されるアプリケーションとGUIプロセスによって起動されるアプリケーションの両方)で、そのバージョンが有効になります。

あなたは、コマンドラインからこれを実行することにより、現在のバージョンをテストすることができます。

java -version 

は、私が実際にMacがJavaのシンボリックリンクディレクトリとファイルのセット全体を処理する方法が好きではありません。それは明らかではないし、人々はしばしばそれを台無しにする。

詳しくは、apple developer pageを参照してください。

+0

私が私の質問で述べたように、私はすでにJavaPreferences.appにJavaのバージョンを設定しています。 "java -version"を実行すると "1.6.0_07"と表示されます。しかし、Antはこのプロパティに依存するのではなく、JAVA_HOME env var。 – ejel

+0

申し訳ありませんが、私はそれを見逃していました。 私はこれがJava Preferencesアプリケーションによって制御されていると確信していましたが、少しのテストではそうではないことがわかりました。 CurrentJDKリンクではなく、/System/Library/Frameworks/JavaVM.framework/Versions/Currentリンクを制御します。 WTFはリンゴの考えですか? –

-1

シェルが環境変数の変更を取得できるように、新しいコマンドプロンプトインスタンスを開く必要がある場合があります。

3

Ted、Java Preferencesアプリケーションを使用しても、/System/Library/Frameworks/JavaVM.framework/VersionsのCurrentJDKのシンボリックリンクは変更されません。これは、JAVA_HOME環境変数が設定されていない場合、Antが使用するものです。したがって、シンボリックリンクを手動で変更するか、JAVA_HOME環境変数を設定することができますが、そうしないと、Antは正しいJDKを使用しません。

あなたはAntのbuild.xmlファイルに<エコーメッセージ=「$ {ant.java.version}」/ >を発行することにより、使用しているJDKのバージョンを確認することができます。

7

私は私の.zshrcファイルに行

export JAVA_HOME=`/usr/libexec/java_home` 

を追加しました、(あなたbashを使用する場合の.bash_profileまたは何でも)トリックを行うようです。

+0

/usr/libexec/java_homeを持たないOSXについて質問しました。どちらの場合でも、.zshrcはzsh用です。デフォルトのシェルはOSXのbashです。 – AlBlue

+1

私はOS X上にあります。 – Theo

2

私はすべてを試し、そして唯一の事は私の作品:1.6にCurrentJDK、およびリンクを解除:

cd /System/Library/Frameworks/JavaVM.framework/Versions 
sudo unlink CurrentJDK 
sudo ln -sF "1.6" CurrentJDK 

は、最後に私が取得:

java -version 
java version "1.6.0_22" 

私はこのヘルプを願っています。

関連する問題