为什么我无法在MAC OS X 10.11上看到JAVA_HOME路径?

我试图在我的MAC OS X 10.11(El Capitan)上运行JAVA应用程序。

我使用此链接在我的MAC OS X 10.11上设置JAVA_HOME。

我能够运行以下命令:
java -version
哪个java

但是,当我在MAC上的终端应用程序中输入echo $ JAVA_HOME时,我什么也看不见。 这是为什么? 这是否意味着我的JAVA_HOME设置不正确?

在哪里定义它

好的,首先,我们必须明确设置JAVA_HOME

简化后,您可以在两个文件中定义它: ~/.bashrc~/bash_profile默认情况下 ,前者是针对所谓的“交互式非登录shell”执行的,而后者则用于“登录shell”。 “登录shell”正是您所期望的:通过命令行登录后启动的shell。 “交互式非登录shell”是例如从GUI内启动的shell。 因此,根据这一点,我们应该将我们的导出语句放入~/.bashrc

附注:当OS X的“终端”应用程序读取所提到的两个文件时,这不是默认行为,因此不应该这样对待。 这就是为什么我写了一个解释。

做什么定义

您需要在~/.bashrc文件中导出JAVA_HOME,以便每次打开shell时都会设置该变量。

在OS X上,Java开发工具包和运行时环境现在存储在/Library/Java/JavaVirtualMachines/下很长一段时间。 看看那里。 这是它看我的机器的方式:

 /Library/Java/JavaVirtualMachines/ ├── jdk1.7.0_45.jdk ├── jdk1.8.0_20.jdk ├── jdk1.8.0_25.jdk └── jdk1.8.0_51.jdk 

子文件夹看起来与此类似

 jdk1.7.0_45.jdk/ └── Contents ├── Home ├── Info.plist └── MacOS 

我们得到了它。 因此,如果您想指向JDK 1.7.0_45,则将以下语句放入.bashrc

 export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home" 

要确保调用该Java版本的正确二进制文件,还应在上述语句之后的某处添加以下内容:

 export PATH=$JAVA_HOME/bin:$PATH 
 export JAVA_HOME=$(/usr/libexec/java_home -v 1.8) 

这是为Java 8 ….原始链接,我发现它在这里安装Java在Mac OS X 10.10 Yosemite和10.11 El Capitan

但是接受的答案也有效。 更新后只需要注意路径的变化。

您将找到有关如何在OSX中设置JAVA_HOME的许多答案,但如果根本不需要设置JAVA_HOME,则很难找到问题的答案。

这是为什么? 这是否意味着我的JAVA_HOME设置不正确?

在OSX上,设置JAVA_HOME环境变量是可选的。 JRE和JDK安装程序不提供JAVA_HOME设置; 所以没有设置JAVA_HOME是完全没问题的。

如果你想出于某些原因使用jdk 1.6,Apple已停止支持。 更新Mac OS后将删除它。 你仍然可以从这个页面获得jdk 1.6: https : //support.apple.com/kb/DL1572? locale = zh_CN

再次安装jdk 1.6后,记得确认在〜/ .bash_profile等中确认导出系统变量$ JAVA_HOME的正确目录。对我来说,它是“/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home” 。