我已经安装了从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_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)

其他回答

安装JDK 7,这个问题就会自行解决。

确保使用Java开发工具包(JDK),其中包括编译器和类似的东西,而不仅仅是Java运行时环境(JRE)。

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

更新

brew tap adoptopenjdk/openjdk
brew cask install adoptopenjdk/openjdk/adoptopenjdk8

https://stackoverflow.com/a/28635465

旧版本 对我来说,最简单、最干净的方法是使用下面描述的自制程序安装Java:

https://stackoverflow.com/a/28635465

brew update
brew cask install java

Jenv,我可以建议你看看这个工具吗

这将允许您随时在已安装的jvm之间切换。

仅仅是:

jenv global oracle-1.7

之后为了测试目的:

jenv global oracle-1.6

你有更多的命令可用。

这太疯狂了!Oracle如何提供一个不安装任何东西的安装程序!?

无论如何,对我来说是:

sudo rm /usr/bin/java
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre/bin/java /usr/bin/java

1.8.0_31是你安装的Java版本…