[许多使用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 Preference窗格中所定义)。
但是应该使用哪个?或者可以使用其中任何一个?
[雪豹还有/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
作为其他答案,正确的查找Java主目录的方法是使用/usr/libexec/java_home
。
官方文档在Apple的技术问答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
我肯定我也是这样,只是不记得在哪里。
创建文件~/.mavenrc
然后将其粘贴到文件中
export JAVA_HOME=$(/usr/libexec/java_home)
测试
mvn -v
截至目前,您可以开始使用jEnv之类的东西。这消除了手动管理这些路径的麻烦。只需使用以下命令使用Home-brew安装jEnv:
$ brew install jenv
# In Case of Zsh for example
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(jenv init -)"' >> ~/.zshrc
#Add the java versions on your system to jEnv
$ jenv add /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
oracle64-1.6.0.39 added
$ jenv add /Library/Java/JavaVirtualMachines/jdk17011.jdk/Contents/Home
oracle64-1.7.0.11 added
#Use the version of java you like at will, and let jEnv manage the rest
$ jenv global oracle64-1.6.0.39
参考:https://www.jenv.be以摆脱这种喧嚣
对于Fish Shell用户,请使用类似以下的内容:alias java7 "set -gx JAVA_HOME (/usr/libexec/java_home -v1.7)"
此外,设置您的PATH以反映JDK也很有趣。添加JAVA_HOME之后(可以用'mipadi'引用的示例来完成):
export JAVA_HOME=$(/usr/libexec/java_home)
也添加到〜/ .profile:
export PATH=${JAVA_HOME}/bin:$PATH
P.S。:对于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
就是这样。
我在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
现在Java似乎已安装在/Library/Java/JavaVirtualMachines
中
我倾向于使用/Library/Java/Home
。首选项窗格的工作方式应与您的首选版本保持最新。
以上内容在YOSEMITE图形应用中不再起作用!例如eclipse或任何以Spotlight开头的东西。 (.bash_profile,launched.conf仅适用于终端会话。)在开始Eclipse之前,只需打开一个终端窗口,然后发出以下命令:
launchctl setenv JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
((使用您的安装路径!也许可以用$(/ usr / libexec / java_home)代替完整路径。)
在此处查看有关永久解决方案的完整文章:Setting environment variables via launchd.conf no longer works in OS X Yosemite/El Capitan/macOS Sierra?
我发现此stack有帮助,我遇到了同样的问题,可以解决:
我的java路径在这里:
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
并且需要放入我的.bash_profile
:
export JAVA_HOME=\"/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home\"
希望帮助
由于您提到了应用程序,所以跳过了终端设置,设置了永久的系统环境变量(适用于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(真的吗?)以满足您的需要和您的系统