JDK 1.6无法在Centos 7.9上面执行java命令

情况描述:

一台旧的centos 5的java应用需要迁移到centos7.9 上面,拷贝JDK 1.6 过来后,发现执行java命令报错

初步分析:

1、缺少库包:

bash: ./java: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

2、尝试安装缺少的库文件

yum install -y /lib/ld-linux.so.2
# 发现centos7.9 yum 不提供这个库文件

3、从旧的机器上面拷贝这个库文件过来 (不推荐

lrwxrwxrwx 1 root root 14 Aug 16 10:58 /lib/ld-linux.so.2 -> /lib/ld-2.5.so

4、再次执行

bash: ./java: Permission denied

5、怀疑是权限问题,貌似root用户都不能执行,那应该没啥权限问题

6、考虑是新拷贝过来的库文件权限异常,发现拷贝过来的库文件没有执行权限,添加执行权限

# 修改权限
chmod 0755 /lib/ld-2.5.so
# 查看文件状态
stat /lib/ld-2.5.so

7、发现新的库文件依赖问题

./java: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory

8、换了台centos7.7 发现yum 能提供/lib/ld-linux.so.2

centos7.7 # yum provides /lib/ld-linux.so.2
glibc-2.17-292.el7.i686
centos7.7 # yum install -y /lib/ld-linux.so.2

9、centos 7.7 能正常执行jdk 1.6 的java命令

总结:

1、主要是centos 7.9 yum没有/lib/ld-linux.so.2导致走了弯路,估计是不兼容这个32位的库包了,没深究

2、另外拷贝文件,需要注意源文件的文件权限,时间长了不好找原因

3、如果系统跨大版本,需要考虑兼容性问题,通过yum能避免一些兼容性的问题,并尝试降低版本缩小版本差距试试

你可能感兴趣的:(运维,异常与报错,实用类,java,centos,linux)