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

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


当前回答

正如其他回答指出的那样,找到Java主目录的正确方法是使用/usr/ libeexec /java_home。

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

其他回答

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

以上工作不再是在优胜美地的图形应用!比如《月食》或者重点报道节目。(.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?

正如其他回答指出的那样,找到Java主目录的正确方法是使用/usr/ libeexec /java_home。

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

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

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

在~/.profile中添加:

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

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

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

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

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