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

And*_*ndy 15 java macos

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

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

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

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

Mar*_*erg 34

在哪里定义它

好的,首先,我们必须明确在哪里设置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
Run Code Online (Sandbox Code Playgroud)

子文件夹看起来与此类似

jdk1.7.0_45.jdk/
??? Contents
    ??? Home
    ??? Info.plist
    ??? MacOS
Run Code Online (Sandbox Code Playgroud)

我们得到了它.所以如果你想指向JDK 1.7.0_45,你可以将以下语句放入你的.bashrc

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home"
Run Code Online (Sandbox Code Playgroud)

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

export PATH=$JAVA_HOME/bin:$PATH
Run Code Online (Sandbox Code Playgroud)


小智 7

export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
Run Code Online (Sandbox Code Playgroud)

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

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