从JDK 6升级到JDK 7过程中遇到的一个问题

时间:2021-05-27 19:10:31

先前系统上有JDK 6的安装,由于要部署Facebook的Presto做一些测试,需要将其升级到JDK 7,但是在安装的过程中遇到以下的问题:


[root@x01 data2]# rpm -ivh --force --replacepkgs jdk-7u45-linux-x64.rpm          
Preparing...                ########################################### [100%]
   1:jdk                    ########################################### [100%]
Unpacking JAR files...
        rt.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_45/jre/lib/rt.pack
Error: unpack could not create JAR file:

        /usr/java/jdk1.7.0_45/jre/lib/rt.jar

Please refer to the Troubleshooting section of the Installation Instructions
on the download page.
        jsse.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_45/jre/lib/jsse.pack
Error: unpack could not create JAR file:

        /usr/java/jdk1.7.0_45/jre/lib/jsse.jar

Please refer to the Troubleshooting section of the Installation Instructions
on the download page.
        charsets.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_45/jre/lib/charsets.pack
Error: unpack could not create JAR file:

        /usr/java/jdk1.7.0_45/jre/lib/charsets.jar

Please refer to the Troubleshooting section of the Installation Instructions
on the download page.
        tools.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_45/lib/tools.pack
Error: unpack could not create JAR file:

        /usr/java/jdk1.7.0_45/lib/tools.jar

Please refer to the Troubleshooting section of the Installation Instructions
on the download page.
        localedata.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_45/jre/lib/ext/localedata.pack
Error: unpack could not create JAR file:

        /usr/java/jdk1.7.0_45/jre/lib/ext/localedata.jar

Please refer to the Troubleshooting section of the Installation Instructions
on the download page.
        jfxrt.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_45/jre/lib/jfxrt.pack
Error: unpack could not create JAR file:

        /usr/java/jdk1.7.0_45/jre/lib/jfxrt.jar

Please refer to the Troubleshooting section of the Installation Instructions
on the download page.

如果在这种情况下,我们查看Java的版本,会报出以下的错误:

[root@x01 data2]# java -version
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object

最终的解决办法,是清理掉系统残留的旧版本的相关的安装:

[root@x01 data2]# rpm -qa | grep jdk
jdk-1.7.0_45-fcs.x86_64
[root@x01 data2]# rpm -e jdk-1.7.0_45-fcs.x86_64
[root@x01 data2]# rpm -qa | grep jdk
[root@x01 data2]# rpm -qa | grep java
sun-javadb-core-10.6.2-1.1.i386
sun-javadb-javadoc-10.6.2-1.1.i386
sun-javadb-common-10.6.2-1.1.i386
sun-javadb-client-10.6.2-1.1.i386
sun-javadb-docs-10.6.2-1.1.i386
sun-javadb-demo-10.6.2-1.1.i386
[root@x01 data2]# rpm -e sun-javadb-*
error: package sun-javadb-* is not installed
[root@x01 data2]# rpm -e sun-javadb-core-10.6.2-1.1.i386  sun-javadb-javadoc-10.6.2-1.1.i386 sun-javadb-common-10.6.2-1.1.i386 sun-javadb-client-10.6.2-1.1.i386 sun-javadb-docs-10.6.2-1.1.i386 sun-javadb-demo-10.6.2-1.1.i386
[root@x01 data2]# rpm -qa | grep java
[root@x01 data2]# rpm -qa | grep jre
[root@x01 data2]# rpm -qa | grep java
[root@x01 data2]# rpm -qa | grep jdk

这样之后,再运行先前的安装程序即可:

[root@x01 data2]# rpm -ivh  jdk-7u45-linux-x64.rpm                      
Preparing...                ########################################### [100%]
   1:jdk                    ########################################### [100%]
Unpacking JAR files...
        rt.jar...
        jsse.jar...
        charsets.jar...
        tools.jar...
        localedata.jar...
        jfxrt.jar...
[root@x01 data2]# source /etc/profile
[root@x01 data2]# java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
[root@x01 data2]# 

Done!