如何用 OpenJDK 7 替换 OpenJDK 6?

Iva*_*van 33 java 11.10 openjdk

令人惊讶的是(因为 OpenJDK 7 大约在 4 个月前正式发布)Ubuntu 11.10 默认仍然使用 OpenJDK 6 而不是 7。我该如何最好地解决这个问题?我更愿意完全删除 OpenJDK 6,让 OpenJDK 7 成为 default-jdk 和 default-jre。

我不想要官方的 Oracle tarball,我想要 deb repos——标准的 Ubuntu 方式。

jnv*_*jnv 28

问题是该default-jre包依赖于 OpenJDK 6,而大多数其他包的依赖项定义为default-jre | openjdk-6-jre | sun-java6-jre- 所以在 OpenJDK 7 正式支持并将用作默认版本之前,或者直到所有依赖于 Java 的包更新其依赖项之前,您将必须保留 OpenJDK 6 并使用update-java-alternatives. 64位系统示例:

$ update-java-alternatives -l
java-1.6.0-openjdk 1061 /usr/lib/jvm/java-1.6.0-openjdk
java-1.7.0-openjdk-amd64 1051 /usr/lib/jvm/java-1.7.0-openjdk-amd64
$ sudo update-java-alternatives -s java-1.7.0-openjdk-amd64
Run Code Online (Sandbox Code Playgroud)

在 32 位系统上目录名称会有所不同,您可以使用-l开关找到正确的名称。第二条命令可能会吐出很多错误;要么使用--jreswitch 要么只是忽略错误——脚本会改变它所能做的,而忽略其余的。

理论上可以编辑default-jre软件包以依赖 OpenJDK 7,但请注意,这可能弊大于利。

  • 为了让它精确地工作,我必须确保每个 openjdk-6 或 icetea-6 包都有一个相应的 openjdk-7 或 icetea-7 包,否则 update-java-alternatives 将无法进行切换。 (2认同)
  • 安装 icedtea-7-plugin(`$ sudo apt-get install icedtea-7-plugin`)后,它在 Ubuntu 12.04 上运行良好。谢谢。 (2认同)

shi*_*nkr 10

为此,您必须在系统上安装两个版本的 jdk。您可以使用 apt-get 下载两者。

那次尝试之后,

$ sudo update-alternatives --config java
Run Code Online (Sandbox Code Playgroud)

并选择您要使用的 jdk。

Openjdk 有时对某些应用程序不利。

您还应该尝试使用 oracle-java 或 sun-java。

以下链接对此非常有用:

http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html


che*_*ver 3

OpenJDK 7 位于 11.10 的正常 ubuntu 存储库中,如果您查找 openjdk-7-jre 和 openjdk-7-jdk 并使用 apt-get/synaptic/software center 安装它们,它们应该替换 openjdk-6,如果没有您可以首先使用删除 openjdk-6-* 软件包apt-get purge openjdk-6-*


Las*_*ini 2

该存储库可以在这里找到: https ://launchpad.net/~openjdk/+archive/ppa

或者:

sudo apt-add-repository ppa:openjdk/ppa
sudo apt-get update
sudo apt-get upgrade
Run Code Online (Sandbox Code Playgroud)

假设你已经安装了 OpenJDK