在Mac OS X上使用JDK 1.6运行Ant

时间:2009-03-29 20:48:30

标签: java macos ant

我在使用Mac OS X上的JDK 1.6运行Ant时遇到问题。即使在OS X的Java首选项中将Java应用程序版本设置为Java SE 6,在终端中执行java -version也会显示java version "1.6.0_07" ,Ant似乎仍然使用JDK 1.5来使用JDK 1.5,因为它在编译我的代码时没有看到JDK 1.6类。

我理解Ant依赖于JAVA_HOME环境变量来指定要使用的JDK。但是,我不太明白如何在Mac OS X上设置此变量。

因此,我的问题是如何在Mac OS X上使用JDK 1.6运行Ant。如果仍然设置JAVA_HOME环境变量的正确方法,那么如何在OS X上设置变量。

6 个答案:

答案 0 :(得分:21)

JAVA_HOME环境变量在主目录的.profile文件中设置。 (/Users/ejel/.profile?)编辑它并将其设置为您想要的结果。 E.g:

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home

从这一点开始,每次打开一个新的终端窗口时,它都会将JAVA_HOME设置为这个新值。任何现有的打开窗口都不会改变它。

如果您真的对将其置于配置文件中感到骇然,或者它与其他软件冲突,则可以始终在终端中手动运行export语句,也可以进入运行一次的脚本(例如:setj6ev.sh)在开始运行ant任务之前。

答案 1 :(得分:7)

我添加了

export JAVA_HOME=`/usr/libexec/java_home`

对于我的.zshrc文件,它似乎可以解决这个问题(.bash_profile或者如果你使用bash的话)。

答案 2 :(得分:3)

Ted,使用Java Preferences应用程序不会更改/System/Library/Frameworks/JavaVM.framework/Versions中的CurrentJDK符号链接,如果未设置JAVA_HOME环境变量,Ant将使用该符号链接。因此,您可以手动更改该符号链接或设置JAVA_HOME环境变量,但如果您不这样做,则Ant将不使用正确的JDK。

您可以通过发出< echo message =“$ {ant.java.version}”/>来查看Ant正在使用的jdk的版本。在build.xml文件中。

答案 3 :(得分: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

答案 4 :(得分:2)

我尝试了一切,只有一件事适合我:取消链接CurrentJDK,并链接到1.6:

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

最后我得到了:

java -version   
java version "1.6.0_22"

我希望这有帮助。

答案 5 :(得分:-1)

您可能需要打开一个新的命令提示符实例,以便shell可以获取对环境变量的任何更改。