配置linux的jdk报错error while loading shared libraries: libjli.so

问题描述: 


执行jar命令,javac命令执行报错 
javac: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory 

 

事情起因经过

配置jdk 都可以眯着眼配置了,然而今天配置阿里云服务器发生了意外,差点啪啪打脸,地发现有一个依赖的so文件从来没找见过,也没有了解过,最后发觉阿里云服务解压缩少好多东西,其中就少了 /jdk1.8/lib/amd64/jli/libjli.so 也不知道是啥东西,手记一下,万一下次遇到也是经验。

解决方案: 

首先查看下解压后的jdk目录下东西是否完整(我就是tar -zxvf 命令解压丢了好多东西,连jre都没有)

然后查看/usr/bin 中是否存在java软链(相当于windows快捷方式)


wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

没有的话,创建一下建立软链 
/opt/jdk1.8/  这是我的路径,你要根据自己的路径替换,后面的 /usr/bin  路径不变

ln -s /opt/jdk1.8/bin/javac /usr/bin/javac 
ln -s /opt/jdk1.8/bin/jar /usr/bin/jar


#/opt/jdk1.8/这是我的路径,你要根据自己的路径替换,后面的 /usr/bin路径不变

有的话可以先删除

rm -rf /usr/bin/javac 
rm -rf /usr/bin/jar
rm -rf /usr/bin/java

查找libjli.so文件 

find / -name libjli.so
ldd /usr/bin/java
linux-vdso.so.1 =>  (0x00007fffba769000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00000038c4000000)
libjli.so => not found
libdl.so.2 => /lib64/libdl.so.2 (0x0000003da7c00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003da7400000)
/lib64/ld-linux-x86-64.so.2 (0x0000003da6c00000)

其实这个so文件在java的安装包中是有的,只是没有添加了ld_path 里面,解决办法:

# rpm -ql jdk1.8.0_45|grep libjli
/usr/java/jdk1.8.0_45/jre/lib/amd64/jli/libjli.so
/usr/java/jdk1.8.0_45/lib/amd64/jli/libjli.so

然后,将/usr/java/jdk1.8.0_45/jre/lib/amd64/jli/  或 /usr/java/jdk1.8.0_45/lib/amd64/jli/ 添加到文件: /etc/ld.so.conf 中,然后执行ldconfig 即可

最后,libjli.so 是个啥玩意儿,为啥从来没找见过,却也从来没报错过?

或者是自己再配置一次jdk

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 这个错误消息表示,在试图运行一个Java程序时,系统找不到libjli.so这个共享库文件。这通常是因为Java运行时环境没有正确安装或配置。建议检查Java是否已正确安装,并确保系统的共享库路径包含了Java安装目录。 ### 回答2: 这个错误消息是 Java 运行时环境提示的,提示出现了一个库文件的问题。具体来说,就是 Java 运行时环境无法加载 libjli.so 这个共享库文件。共享库(Shared library)是一种动态链接库,它可以被多个程序重用,避免了多份冗余的代码。在 Linux 系统上,它们通常是以 .so 扩展名的文件。 出现这个错误的原因可能是因为系统无法找到 libjli.so 文件,或者文件存在但没有正确的权限。这个文件应该位于 JDK 安装目录的 jre/lib/amd64 目录下。可以通过以下命令确认文件位置: ```bash $ find / -name libjli.so 2>/dev/null ``` 如果文件存在但权限不正确,可以通过以下命令修复: ```bash $ chmod o+x /path/to/libjli.so ``` 如果文件不存在,则需要重新安装 JDK。建议使用官方提供的安装包进行安装,避免出现这种问题。安装时应该注意选择正确的操作系统和架构,比如: ```bash $ sudo apt-get install openjdk-8-jdk ``` 在某些情况下,可能需要将 JDK 安装目录添加到 LD_LIBRARY_PATH 环境变量中,这样系统才能正确找到共享库文件。例如: ```bash $ export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64:$LD_LIBRARY_PATH ``` 如果以上方法都无法解决问题,可以考虑重新编译应用程序或者重新安装操作系统。出现这种错误可能是因为系统配置不正确或者某些文件被误删除。 ### 回答3: 当使用Java命令时,有时会出现以下错误信息:java: error while loading shared libraries: libjli.so: cannot open shared object file: no such file or directory。这种情况通常表示系统缺少需要的共享库,或者共享库路径找不到。 在Linux系统中,共享库由动态链接器管理,当使用Java命令时,系统会自动加载libjli.so库,如果该库不在系统路径中,则需要手动添加路径。可以通过以下任一方法解决该问题。 方法一: 1.检查Java环境变量,确保路径正确设置。 2.安装缺失的共享库。 方法二: 在Java命令前添加下列环境变量(加粗的部分是所需的共享库路径): export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-0.el7_9.x86_64/jre/lib/amd64/jli:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-0.el7_9.x86_64/jre/lib/amd64/server 注:上述环境变量路径是openjdk 1.8.0的路径,不同版本路径可能有所不同,具体可根据实际情况调整。 使用以上两种方法之一,可以很容易地解决这个问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜马拉雅以南

奶茶,干杯?!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值