我应该在OSX上将JAVA_HOME设置为什么

问题描述 投票:428回答:14

[许多使用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窗格中所定义)。

但是应该使用哪个?或者可以使用其中任何一个?

java macos configuration
14个回答
837
投票

[雪豹还有/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

1
投票

作为其他答案,正确的查找Java主目录的方法是使用/usr/libexec/java_home

官方文档在Apple的技术问答QA1170:OS X上的重要Java目录https://developer.apple.com/library/mac/qa/qa1170/_index.html


1
投票

对我来说,maven似乎无法处理.mavenrc文件:

echo "export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)" > ~/.mavenrc

我肯定我也是这样,只是不记得在哪里。


1
投票

创建文件~/.mavenrc

然后将其粘贴到文件中

export JAVA_HOME=$(/usr/libexec/java_home)

测试

mvn -v


0
投票

截至目前,您可以开始使用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以摆脱这种喧嚣


-1
投票

对于Fish Shell用户,请使用类似以下的内容:alias java7 "set -gx JAVA_HOME (/usr/libexec/java_home -v1.7)"


37
投票

此外,设置您的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


19
投票

我有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

就是这样。


13
投票

我在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

13
投票

现在Java似乎已安装在/Library/Java/JavaVirtualMachines


9
投票

我倾向于使用/Library/Java/Home。首选项窗格的工作方式应与您的首选版本保持最新。


8
投票

以上内容在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?


2
投票

我发现此stack有帮助,我遇到了同样的问题,可以解决:

我的java路径在这里:

/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

并且需要放入我的.bash_profile

export JAVA_HOME=\"/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home\"

希望帮助


2
投票

由于您提到了应用程序,所以跳过了终端设置,设置了永久的系统环境变量(适用于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(真的吗?)以满足您的需要和您的系统

© www.soinside.com 2019 - 2024. All rights reserved.