我已经安装了从oracle网站下载的JDK 7u7。但是安装完成后,终端仍然显示java版本6

$java -version
java version "1.6.0_35"
Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811)
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode)

你知道为什么Java 7没有出现吗?

答: 好的,问题已经解决了。以下是答案: 我发现我的终端有一个.bash_profile, java主变量被设置为1.6

export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home"

所以这就是每次我打开新终端窗口时导致问题的行。 只要去掉这条线就能解决问题。您仍然需要遵循@aleroot所说的,但如果这对您不起作用,请检查.bash_profile(或.bashrc)设置文件,以查看您之前是否导出过任何java版本。


当前回答

如果你的机器上有几个Java版本,你想在运行时动态地选择它,也就是说,在我的情况下,我有两个版本:

ls -la /Library/Java/JavaVirtualMachines
drwxr-xr-x  3 root  wheel    96B Nov 16  2014 jdk1.7.0_71.jdk/
drwxr-xr-x  3 root  wheel    96B Mar  1  2015 jdk1.8.0_31.jdk/

您可以通过修改/etc/profile内容来更改它们。只需在文件末尾添加(或修改)以下两行:

export JAVA_HOME=YOUR_JAVA_PATH/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

在我的情况下,如果我想使用,它应该如下所示:

Java 7:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

Java 8:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

保存文件后,请运行source /etc/profile,它应该可以工作。以下是我使用第一种和第二种选择时的结果:

Java 7:

java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)

Java 8:

java -version 
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)

如果您的java文件夹位于不同的位置,这个过程是类似的。

其他回答

Oracle的安装程序将java放在/Library/Internet plug - in /JavaAppletPlugin.plugin中。它不会覆盖/usr/bin/java.所以,如果你发行一个

whereis java

在终端中,它将返回/usr/bin/java.(反过来指向/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java,这是苹果的1.6版本)。

所以,如果你想使用新的java版本,替换/usr/bin/java符号链接,使其指向/Library/Internet\ Plug-Ins/JavaAppletPlugin。插件/内容/ Home / bin / java相反:

sudo rm /usr/bin/java
sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin

硬编码JAVA_HOME路径可能不是最好的主意。/usr/libexec/java_home实用程序在Mac OSX Lion 10.7.5和JDK 1.7.0_13上仍然适用。根据它的手册页,它是用来与苹果旧的Java首选项窗格一起使用的,但它似乎与Oracle提供的替代品(Java控制面板)一起工作。例如,运行/usr/ libeexec /java_home -V列出所有已安装的jdk(都是1.6. exe)。*和1.7.*)在我的机器。

因此,正如在其他线程中讨论的那样(例如,我应该在OSX上将JAVA_HOME设置为什么),我仍然建议在你的.bash_profile中添加以下行:

export JAVA_HOME=$(/usr/libexec/java_home)

最新100%有效的方法:

在bash中:

vim ~/.bash_profile

add

export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"

:wq保存 Cmd +q强制退出bash 再次打开bash,并输入Java -version

但实际上这个路径指向jre而不是jdk。

如果您想将路径指向JDK,则需要

确保您已经安装了JDK,而不是一个JRE运行时 替换之前的路径为path ="/Library/Java/JavaVirtualMachines/jdk1.8.0_221. "jdk”,你可以去/Library/Java/JavaVirtualMachines确保你已经安装了你想要的jdk版本。

从Oracle站点通过分布式JDK DMG安装会自动更新所有内容。我已经看到(在El Capitan)更新通过系统首选项> Java做更新,但不反映到命令行。通过DMG进行安装就可以了。

我用 Sudo rm /usr/bin/java

我下载并安装了最新的Java SE Runtime Environment: http://www.oracle.com/technetwork/java/javase/downloads/index.html

sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_31.使用实例jdk/Contents/Home/jre/bin/java /usr/bin/java不适合我,因为我得到了操作不允许。El Capitan现在以“无根”模式保护某些系统目录(又名系统完整性保护)。它适用于macOS Sierra,可能在可预见的未来也适用于新的macOS版本。