在运行 Java 1.6.0 update 16 的 64 位 RHEL5 上,root 可以成功运行 Java 程序,但用户不能,因为libjli.so
应该找不到。关闭SELinux,程序运行前环境不变。我试过放入libjli.so
,LD_LIBRARY_PATH
但没有任何区别。
我该如何解决这个错误?
想到的第一个可能性libjli.so
是只能通过 root 读取。所以第一步:
ls -l $(locate libjli.so)
Run Code Online (Sandbox Code Playgroud)
如果它位于奇怪的位置(不在/usr/lib
或 中/lib
),则创建/etc/ld.so.conf.d/java.conf
包含目录路径的文件,libjli.so
并/sbin/ldconfig
以 root 身份运行。
有关更多故障排除信息,请以 root 用户和非 root 用户身份运行此命令:
ldd java
Run Code Online (Sandbox Code Playgroud)
在一个理智的世界中,两者的输出将是相同的。它们的不同之处应该可以告诉您很多关于失败的原因。