2015-10-09 58 views
12

我想在我的MAC OS X 10.11(El Capitan)上运行一个JAVA应用程序。为什么我无法在MAC OS X 10.11上看到JAVA_HOME路径?

我用 this link在我的MAC OS X 10.11上设置了JAVA_HOME。

我能够运行以下命令:
Java的版本
的Java

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

回答

31

在哪里把它定义

好吧,首先,我们要明确其中设置JAVA_HOME

简化后,您可以将其定义为两个文件:~/.bashrc~/bash_profile。通过默认前者是为所谓的“交互式非登录shell”执行的,而后者用于“登录shell”。 “登录shell”正是你期望的:一个通过命令行登录后启动的shell。例如,“交互式非登录外壳”是从GUI内启动的外壳。所以,据此,我们应该把我们的出口声明放入~/.bashrc。注意:尽管OS X的“终端”应用程序读取这两个文件,但这不是默认行为,因此不应该这样处理。这就是为什么我写了一个解释。

什么定义

你需要让每一个外壳被打开时,该变量设置导出JAVA_HOME在~/.bashrc文件。

在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 
+0

您没有回答这里提到的第一个问题。 –

+0

@PeterVerhas噢,我隐含地说:它不可用,因为它没有被导出到正确的dotfile文件中。要使环境变量可用,需要设置它;) –

+0

仅供参考 - 这对于高塞拉利昂不适用。我需要指定jdk1.8,并安装了java 9。唯一的解决方案是删除Java 9. – eimmer

0

如果您想使用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正确的目录等 对我来说,它是“/图书馆/的Java/JavaVirtualMachines/1.6.0.jdk /内容/首页”。

0

关于如何在OSX中设置JAVA_HOME,你会找到很多答案,但是如果完全需要设置JAVA_HOME,很难找到问题的答案。

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

在OSX上,设置JAVA_HOME环境变量是可选的。 JRE和JDK安装程序不提供正在设置的JAVA_HOME;所以JAVA_HOME没有被设置是非常好的。