许多使用shell脚本配置环境的Java应用程序都使用JAVA_HOME环境变量来启动正确的Java版本、定位JRE jar,等等。

在macOS X 10.6中,以下路径似乎对该变量有效

/Library/Java/Home
/System/Library/Frameworks/JavaVM.framework/Home
/System/Library/Frameworks/JavaVM.framework/Versions/Current

其中一些是到实际当前VM的符号链接(在Java Preference窗格中定义)。

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


当前回答

对我来说,maven似乎在.mavenrc文件中工作:

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

我确定我也是在SO上学的,只是不记得在哪里了。

其他回答

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

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

建议在设置JAVA_HOME环境变量前检查默认终端shell,使用如下命令:

$ echo $SHELL
/bin/bash

如果您的默认终端是/bin/bash (Bash),那么您应该使用@hygull方法

如果您的默认终端是/bin/zsh (Z Shell),那么您应该在~/中设置这些环境变量。Zshenv文件,内容如下:

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

类似地,上面没有提到的任何其他终端类型,都应该在其各自的终端env文件中设置环境变量。

此方法在macOS Mojave Version 10.14.6中测试。

我用的是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

另外,将PATH设置为反映JDK也很有趣。在添加JAVA_HOME(可以用'mipadi'引用的例子来完成)之后:

出口JAVA_HOME = $ (/ usr / libexec / JAVA_HOME)

在~/.profile中添加:

导出路径= $ {JAVA_HOME} / bin:美元的道路

附注:对于OSX,我通常在HOME目录中使用.profile而不是.bashrc