如何设置默认Java版本

我一直在Ubuntu 11.10上使用Java 6,但现在我想更新到版本7.我已经通过PPA安装了版本7, 如此处所述 。 如果我跑

sudo update-alternatives --config java 

我得到以下输出:

 There are 2 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/lib/jvm/java-7-oracle/jre/bin/java 64 auto mode 1 /usr/lib/jvm/java-6-sun/jre/bin/java 63 manual mode * 2 /usr/lib/jvm/java-7-oracle/jre/bin/java 64 manual mode 

同样,如果我跑:

 sudo update-alternatives --config javac 

我得到输出:

  Selection Path Priority Status ------------------------------------------------------------ 0 /usr/lib/jvm/java-7-oracle/bin/javac 64 auto mode 1 /usr/lib/jvm/java-6-sun/bin/javac 63 manual mode * 2 /usr/lib/jvm/java-7-oracle/bin/javac 64 manual mode 

因此看起来版本7已经是默认版本。 但如果我跑了

 java -version 

要么

 javac -version 

输出表明版本6仍然是默认值。 如何将默认设置为版本7?

根据这个答案: 如何设置默认的Java版本?

尝试提供显式路径以及update-alternatives --installupdate-alternatives --install ,然后运行update-alternatives进行选择:

 sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/java-7-oracle/jre/bin/java" 1 sudo update-alternatives --config java sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/java-7-oracle/bin/javac" 1 sudo update-alternatives --config javac 

你也需要设置javac

 sudo update-alternatives --config javac 

我有同样的问题。 我安装了sun jdk6。 后

  sudo update-alternatives --config java sudo update-alternatives --config javac sudo update-alternatives --config javaws 

我需要重启。 比它工作。

编辑:我意识到这不足以完成上述步骤。

我还必须编辑环境变量:

  sudo nano /etc/environment 

并添加(不同的java版本将需要不同的字符串):

  JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64" 

插入标识所需路径的编号,然后按Enter键。 在这种情况下插入1。

最后,尝试测试java -version版本

我想你的java二进制文件指向除/etc/alternatives/java之外的某个地方。

检查输出: type java

它说/usr/bin/java吗? 如果是这样,那么检查是否正确指向备选方案:

ls -l /usr/bin/java应该显示它指向/etc/alternatives/java

最后确认/etc/alternatives/java本身指向java-7:
ls -l /etc/alternatives/java

update-alternatives命令仅调整最后一个,并假定默认指向/usr/bin/java ,而/usr/bin/java又正确链接到/etc/alternatives/java

我尝试了上面列出的几乎所有方法,但仍然发现java -version打印错误的版本,而ls -al /etc/alternatives/java已经指向正确的版本。

所以我运行: which java ,发现结果显示我从/usr/local/jdk_xxx/bin/java ,然后我删除了这个文件夹并重新启动了终端。 现在java运行良好。

希望它会帮助别人。