许多使用shell脚本配置其环境的Java应用程序使用JAVA_HOME
环境变量来启动正确版本的Java,找到JRE JAR等.
在OSX 10.6上,以下路径似乎对此变量有效
/Library/Java/Home /System/Library/Frameworks/JavaVM.framework/Home /System/Library/Frameworks/JavaVM.framework/Versions/Current
其中一些是实际当前VM的符号链接(如"Java首选项"窗格中所定义).
但应该使用哪一个 - 或者可以使用其中任何一个?
雪豹还有/usr/libexec/java_home
吗?在10.5上,我只是设置JAVA_HOME
了该命令的输出,它应该为您提供Java首选项中指定的Java路径.这是我.bashrc
文件中的一个片段,它设置了这个变量:
export JAVA_HOME=$(/usr/libexec/java_home)
我没有遇到过这种技术的任何问题.
有时我必须将JAVA_HOME
Java 的值更改为早期版本.例如,我正在维护的一个程序在OS X上需要32位Java 5,因此在使用该程序时,我JAVA_HOME
通过运行来设置:
export JAVA_HOME=$(/usr/libexec/java_home -v 1.5)
对于那些没有java_home
在你的道路上的人,这样添加它.
sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home /usr/libexec/java_home
另外,设置PATH以反映JDK很有意思.添加JAVA_HOME后(可以使用'mipadi'引用的示例完成):
export JAVA_HOME=$(/usr/libexec/java_home)
在〜/ .profile中添加:
export PATH=${JAVA_HOME}/bin:$PATH
PS:对于OSX,我通常在HOME目录中使用.profile而不是.bashrc
我有MAC OS X(Sierra)10.12.2.
我按照以下步骤将JAVA_HOME设置为React Native(适用于Android应用).
打开终端(Command + R,输入Terminal,按ENTER).
将以下行添加到〜/ .bash_profile.
export JAVA_HOME=$(/usr/libexec/java_home)
现在运行以下命令.
source ~/.bash_profile
您可以通过键入以下命令来检查JAVA_HOME的确切值.
echo $JAVA_HOME
返回的值(输出)将如下所示.
/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
而已.
现在Java似乎已经安装了 /Library/Java/JavaVirtualMachines
我在Mac OS 10.6.8上
对我来说最简单的解决方案就是放入
$ export JAVA_HOME=$(/usr/libexec/java_home)
为了测试它是否有效,请加入
$ echo $JAVA_HOME
表明
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
你也可以测试一下
$ which java
我倾向于使用/Library/Java/Home
.首选项窗格的工作方式应与您的首选版本保持同步.
以上内容在YOSEMITE中不再适用于图形应用程序!像eclipse,或者任何以Spotlight开头的东西.(.bash_profile,launchd.conf仅适用于终端会话.)在启动eclipse之前,只需打开一个终端窗口,然后发出以下命令:
launchctl setenv JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
(使用您的安装路径!也许可以使用$(/ usr/libexec/java_home)而不是完整路径.)
查看关于永久解决方案的完整优秀文章: 通过launchd.conf设置环境变量不再适用于OS X Yosemite/El Capitan/macOS Sierra?