如何升级到最新的 Java 7 而不丢失现有的 Java 依赖项和附加组件?

如何升级到最新的 Java 7 而不丢失现有的 Java 依赖项和附加组件?
$ uname -a
Linux X51 3.0.0-12-generic #20-Ubuntu SMP Fri Oct 7 14:56:25 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

$ java -version
java version "1.6.0_23"
OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-0ubuntu1.11.10.2)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)

我有上述版本,它们具有重要的稳定设置(对于我自己的应用程序):

  • 不幸的是,我一直使用 Java 1.6。
  • 但现在发现由于该版本问题,很多东西都无法正常工作。
  • 我想删除:

a) 完全(安全地)旧 Java

b)切换到新的,安装 openjdk-7 64 位(安全)

简单申请是不是更好的主意apt-get remove openjdk*.

或者

还有什么更聪明、更安全的方法?(为了避免仅仅删除 openjdk-6 而不丢失许多其他依赖项)

跟进:

$ java -version
java version "1.7.0_09"
OpenJDK Runtime Environment (IcedTea7 2.3.3) (7u9-2.3.3-0ubuntu1~12.10.1)

$ sudo update-alternatives --config java
[sudo] password for sun: 
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      auto mode
  1            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode

Press enter to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java to provide /usr/bin/java (java) in manual mode

$ java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.5) (6b24-1.11.5-0ubuntu1~12.10.1)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)

答案1

还有什么更聪明、更安全的方法?(为了避免仅仅删除 openjdk-6 而不丢失许多其他依赖项)

最聪明的方法是向后兼容,安装它们(我相信 Java 7 仍在不断成熟。)

安装 OpenJDK 7 以及您需要的其他任何内容,然后使用sudo update-alternatives --config java显示各种可用的java二进制文件及其位置,并选择一个默认(当您输入时调用java)。

这样,您仍可以在必要时使用 Java 6,只需通过二进制文件的完整路径调用它即可。将 替换javajavacupdate-alternatives,然后设置它们。

当您确定所有代码/程序在 1.7 上都能稳定运行,并且想要摆脱 1.6 时,请先运行以下命令dpkg --list | grep -i openjdk来查明系统上安装了哪些软件包,然后再运行类似apt-get remove openjdk.*!!的命令。

相关内容