No se puede encontrar el archivo de objeto compartido abierto libjli.so: no existe tal archivo o directorio

8

En RHEL5 de 64 bits que ejecuta Java 1.6.0 actualización 16, root puede ejecutar con éxito un programa Java pero un usuario no puede porque libjli.sosupuestamente no se puede encontrar. SELinux está apagado y el entorno es el mismo antes de ejecutar el programa. He intentado poner libjli.soel LD_LIBRARY_PATHpero no hace la diferencia.

¿Cómo soluciono este error?

joeforker
fuente

Respuestas:

9

La primera posibilidad que me viene a la mente es que libjli.sosolo se puede leer desde la raíz. Entonces paso uno:

ls -l $(locate libjli.so)

Si está en una ubicación extraña (no en /usr/libo /lib), cree el archivo que /etc/ld.so.conf.d/java.confcontiene la ruta al directorio que lo contiene libjli.soy ejecútelo /sbin/ldconfigcomo raíz.

Para obtener más información sobre la resolución de problemas, ejecute este comando, una vez como usuario root y una vez como usuario no root:

ldd java

En un mundo sano, la salida de los dos sería idéntica. La forma en que difieren debería decirle mucho sobre por qué esto está fallando.

Insyte
fuente
Sheesh, había configurado LD_LIBRARY_PATH, pensé que la configuración de ldconfig sería infructuosa. ldd java devuelve una ruta relativa que contiene '..' para libjli, supongo que eso no funcionó ya que los empaquetadores esperaban este cliente de Java 1.6.0 16 FCS en particular.
joeforker