64位CentOS运行32位JDK出错
相信很多同学在linux系统中会遇到下面的情况:
[root@localhost ~]# /usr/local/java/jdk1.7.0_79-x86/bin/java
-bash: /usr/local/java/jdk1.7.0_79-x86/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
这是因为在64位Linux操作系统中安装了32位的JDK,且没有安装32位glibc依赖库导致的。在有网的情况下可以执行一下命令解决:
yum install glibc.i686
在没有网络的情况下,需要借助普通PC下载32位glibc。然后通过FTP上传到需要安装的服务器。需要注意的是在安装32位glibc安装的时候可能会出现如下问题:
[root@localhost download]# rpm -ivh glibc-2.17-292.el7.i686.rpm
warning: glibc-2.17-292.el7.i686.rpm: Header V4 DSA/SHA1 Signature, key ID 192a7d7d: NOKEY
error: Failed dependencies:
libfreebl3.so is needed by glibc-2.17-292.el7.i686
libfreebl3.so(NSSRAWHASH_3.12.3) is needed by glibc-2.17-292.el7.i686
这说明没有安装nss-softokn-freebl.i686,只需要安装与服务器上已安装的nss-softokn-freebl.x86_64版本相同的nss-softokn-freebl.i686即可。由于我机器上原本安装了
[root@localhost download]# rpm -qa |grep nss
openssh-server-7.4p1-21.el7.x86_64
nss-softokn-freebl-3.44.0-5.el7.x86_64
nss-util-3.44.0-3.el7.x86_64
nss-pem-1.0.3-7.el7.x86_64
nss-sysinit-3.44.0-4.el7.x86_64
openssh-7.4p1-21.el7.x86_64
openssh-clients-7.4p1-21.el7.x86_64
nss-softokn-3.44.0-5.el7.x86_64
jansson-2.10-1.el7.x86_64
openssl-libs-1.0.2k-19.el7.x86_64
openssl-1.0.2k-19.el7.x86_64
nss-3.44.0-4.el7.x86_64
nss-tools-3.44.0-4.el7.x86_64
nss-softokn-freebl-3.44.0-5.el7.x86_64
但是下载的是nss-softokn-freebl-3.44.0-8.el7_7.i686.rpm,版本不同,导致安装不成功。所以我就下载了nss-softokn-freebl-3.44.0-8.el7_7.x86_64.rpm更新了机器原来的版本。
操作如下:
rpm -Uvh nss-softokn-freebl-3.44.0-8.el7_7.x86_64.rpm
成功后再安装nss-softokn-freebl-3.44.0-8.el7_7.i686.rpm。
操作如下
rpm -ivh nss-softokn-freebl-3.44.0-8.el7_7.i686.rpm
然后再安装32位glibc,成功后就可以运行32位jdk了。
最后推荐一个RPM文件查找下载地址