我在使用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上设置变量。
答案 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可以获取对环境变量的任何更改。