Linux服务器JRE1.8缺失server JVM问题求助(root权限可用)
嗨,这个问题我之前帮同事解决过好几次,大概率是JRE架构和服务器系统不兼容或者解压过程中文件损坏导致的,给你一步步捋清楚解决方案:
解决步骤
1. 先确认服务器的系统架构
先执行这条命令看看你的服务器是32位还是64位:
uname -m
- 如果输出是
x86_64,说明是64位系统; - 如果是
i386或者i686,那就是32位系统。
2. 检查下载的JRE架构是否匹配
去你解压的/tmp/jre1.8目录下看lib文件夹:
- 64位的JRE会有
amd64子文件夹; - 只有32位JRE才会有
i386子文件夹。
如果你的服务器是64位,但你下载的是32位JRE,那必然会出现找不到server/libjvm.so的问题——因为64位系统上32位JRE的server端库要么缺失,要么无法正常加载。这种情况直接去Oracle重新下载对应64位的JRE 1.8压缩包,删掉旧的解压目录后重新解压就行。
3. 若架构匹配,重新解压验证完整性
有时候下载的压缩包可能因为网络问题损坏,导致解压后文件缺失。可以重新来一次:
# 先删除旧的解压目录 rm -rf /tmp/jre1.8 # 重新解压(假设你的jre1.8.zip在/tmp目录下,路径不对的话自己改) unzip /tmp/jre1.8.zip -d /tmp/
解压完成后再测试:
/tmp/jre1.8/bin/java -version
4. 手动指定JVM路径(兜底方案)
如果以上步骤都试过还是不行,可能是JRE的环境变量配置问题,可以手动指定依赖库路径:
# 先设置JAVA_HOME export JAVA_HOME=/tmp/jre1.8 # 64位系统用amd64,32位系统换成i386 export LD_LIBRARY_PATH=$JAVA_HOME/lib/amd64/server:$LD_LIBRARY_PATH # 再次测试 $JAVA_HOME/bin/java -version
5. 永久替换系统默认Java(可选)
如果想让这个JRE成为系统默认的Java环境,建议先把JRE移到永久目录(毕竟/tmp重启会清空),再创建软链接:
# 把JRE移动到/usr/local目录下(这个目录是常用的软件安装目录) mv /tmp/jre1.8 /usr/local/ # 备份原来的java命令 mv /usr/bin/java /usr/bin/java.old # 创建新的软链接 ln -s /usr/local/jre1.8/bin/java /usr/bin/java # 验证是否生效 java -version
内容的提问来源于stack exchange,提问作者ads
相关产品推荐
相关产品推荐

