如何用OpenJDK 7替换OpenJDK 6?


33

出人意料的是(由于OpenJDK 7大约在4个月前已发布到一般可用性),Ubuntu 11.10仍默认使用OpenJDK 6而不是7。我如何最好地解决此问题?我宁愿完全删除OpenJDK 6,而让OpenJDK 7成为default-jdk和default-jre。

我不想要正式的Oracle tarball,我想要deb repos-标准的Ubuntu方法。


有人必须将其构建到Debian软件包中,然后将其放入Launchpad上的PPA中。如果还没有人这样做,则可以制作.deb或安装tar。
马丁·乌丁2011年

仍与12.04的情况下
托尔比约恩Ravn的安德森

2011年-现在的2012年-这是真正解决(其中一个被认为是答案lol。如果不呢?i gonna write a nice wiki on this在我的提问/回答。

最好将系统升级到LTS。
Ketan Patel

Answers:


28

问题在于该default-jre软件包依赖于OpenJDK 6,而大多数其他软件包的依赖关系定义为default-jre | openjdk-6-jre | sun-java6-jre-因此,直到正式支持OpenJDK 7并将其用作默认版本,或者直到所有依赖Java的软件包更新其依赖关系为止,必须保留OpenJDK 6并使用将OpenJDK 7设置为默认值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

在32位系统上,目录名称将有所不同,您可以使用-l开关找到正确的名称。第二个命令可能会吐出很多错误;使用--jreswitch或忽略错误–脚本更改了它可以执行的操作,而忽略其余内容。

从理论上讲,default-jre可以依赖于OpenJDK 7 编辑该程序包,但要警告这可能造成弊大于利。


2
为了使它能够精确地工作,我必须确保每个openjdk-6或icedtea-6软件包都有一个对应的openjdk-7或icetea-7软件包,否则update-java-alternatives将无法进行切换。
布莱尔·扎亚克

2
安装icedtea-7-plugin($ sudo apt-get install icedtea-7-plugin)后,它在Ubuntu 12.04上运行良好。谢谢。
大卫


3

OpenJDK 7在11.10的普通ubuntu存储库中,如果您寻找openjdk-7-jre和openjdk-7-jdk并使用apt-get / synaptic /软件中心安装它们,则应该替换openjdk-6,如果没有您可以先使用以下方法删除openjdk-6- *软件包 apt-get purge openjdk-6-*


1
openjdk-7- *软件包似乎应该与openjdk-6-并排安装。而且,如果我尝试删除openjdk-6-,则有大量的依赖包将被删除(尽管我知道其中一些应用程序可与Java 7完美配合使用)。
伊万

显然default-jre仍然指向
Java6。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.