我应该在OSX上设置JAVA_HOME
许多使用shell脚本来configuration其环境的Java应用程序使用JAVA_HOME
环境variables来启动正确版本的Java,findJRE JAR等等。
在OSX 10.6上,以下path似乎对此variables有效
/Library/Java/Home /System/Library/Frameworks/JavaVM.framework/Home /System/Library/Frameworks/JavaVM.framework/Versions/Current
其中一些是实际当前VM的符号链接(如“Java首选项”窗格中所定义)。
但是应该使用哪一个,还是可以使用它们中的任何一个?
Snow Leopard还有/usr/libexec/java_home
吗? 在10.5上,我只是将JAVA_HOME
设置为该命令的输出,该命令应该为您提供在Java首选项中指定的Javapath。 这里是我的.bashrc
文件的一个片段,它设置了这个variables:
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)
对于那些在你的path中没有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)
也join〜/ .profile中:
export PATH=${JAVA_HOME}/bin:$PATH
PS:对于OSX,我通常在HOME dir中使用.profile而不是.bashrc
现在Java似乎被安装在/ Library / Java / JavaVirtualMachines中
我在Mac OS 10.6.8上
最简单的解决scheme适用于我,只是放在
$ export JAVA_HOME=$(/usr/libexec/java_home)
要testing它是否有效,请input
$ echo $JAVA_HOME
表明
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
你也可以testing
$ which java
我倾向于使用/Library/Java/Home
。 偏好设置窗格的工作方式应该与您的首选版本保持同步。
上述工作不再适用于YOSEMITE for GRAPHICAL APPLICATIONS! 像日食,或任何开始与Spotlight。 (.bash_profile,launchd.conf仅适用于terminal会话。)在启动eclipse之前,只需打开一个terminal窗口,并发出以下命令:
launchctl setenv JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
(使用你的安装path!也许可以使用$(/ usr / libexec / java_home)而不是完整的path。)
查看有关永久性解决scheme的整篇文章: 通过launchd.conf设置环境variables不再适用于OS X Yosemite / El Capitan / macOS Sierra?
我有MAC OS X(Sierra)10.12.2 。
我通过以下步骤将JAVA_HOME设置为在React Native (用于Android应用程序)上工作。
-
打开terminal(命令+ R,键入terminal,点击ENTER)。
-
将以下行添加到〜/ .bash_profile 。
export JAVA_HOME=$(/usr/libexec/java_home)
-
现在运行以下命令。
source ~/.bash_profile
-
您可以通过input以下命令来检查JAVA_HOME的确切值。
echo $JAVA_HOME
返回的值(输出)将如下所示。 /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
而已。
我发现这个堆栈帮助,我有同样的问题,我可以修复:
我的javapath在这里:
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
并需要把我的.bash_profile
:
export JAVA_HOME=\"/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home\"
希望帮助
正如其他答案所指出的,findJava主目录的正确方法是使用/usr/libexec/java_home
。
官方文档在苹果的技术问答QA1170:OS X上的重要Java目录 : https : //developer.apple.com/library/mac/qa/qa1170/_index.html
对我来说maven似乎工作.mavenrc
文件:
echo "export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)" > ~/.mavenrc
我确定我也是捡起来的,只是不记得在哪里。
跳过terminal设置,因为你提到的应用程序,永久的系统环境variables设置(适用于macOS Sierra;也应该为El Capitan工作):
launchctl setenv JAVA_HOME $(/usr/libexec/java_home -v 1.8)
(这将把JAVA_HOME设置为最新的1.8 JDK,很可能你会经历一些更新,比如javac 1.8.0_101,javac 1.8.0_131)
当然,改变1.8到1.7或1.6(真的?)以适应您的需求和您的系统
创build文件~/.mavenrc
然后将其粘贴到文件中
export JAVA_HOME=$(/usr/libexec/java_home)
testing
mvn -v
对于Fish Shell用户,使用如下所示: alias java7 "set -gx JAVA_HOME (/usr/libexec/java_home -v1.7)"