Não foi possível encontrar o arquivo de objeto compartilhado aberto libjli.so - esse arquivo ou diretório não existe

8

No RHEL5 de 64 bits executando o Java 1.6.0, atualização 16, o root pode executar com êxito um programa Java, mas um usuário não pode, porque libjli.sosupostamente não pode ser encontrado. O SELinux é desligado e o ambiente é o mesmo antes da execução do programa. Eu tentei colocar libjli.soo LD_LIBRARY_PATHmas não faz a diferença.

Como corrijo esse erro?

joeforker
fonte

Respostas:

9

A primeira possibilidade que vem à mente é que libjli.soé legível apenas pela raiz. Então, primeiro passo:

ls -l $(locate libjli.so)

Se estiver em um local estranho (não em /usr/libou /lib), crie o arquivo que /etc/ld.so.conf.d/java.confcontém o caminho para o diretório que contém libjli.soe execute /sbin/ldconfigcomo raiz.

Para obter mais informações sobre solução de problemas, execute este comando, uma vez como root e uma vez como um usuário não raiz:

ldd java

Em um mundo são, a saída dos dois seria idêntica. A diferença entre eles deve dizer muito sobre por que isso está falhando.

Insyte
fonte
Sheesh, eu tinha definido LD_LIBRARY_PATH, pensei que o conf do ldconfig seria infrutífero. ldd java retorna um caminho relativo contendo '..' para libjli, acho que não funcionou como os empacotadores esperavam para esse cliente FCS específico da atualização 1.6.0 do Java 1.6.0.
joeforker