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

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


当前回答

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

引用:

Oracle解释了java_home命令 一篇关于在Spring Tool Suite (Eclipse . JDK)中配置JDK的文章 2019)在MacOS上

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

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

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

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

创建文件~/.mavenrc

然后将其粘贴到文件中

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

test

MVN -V