Offene freigegebene Objektdatei libjli.so kann nicht gefunden werden - keine solche Datei oder kein solches Verzeichnis

8

Auf 64-Bit-RHEL5 mit Java 1.6.0 Update 16 kann root ein Java-Programm erfolgreich ausführen, ein Benutzer jedoch nicht, da es libjli.soangeblich nicht gefunden werden kann. SELinux ist deaktiviert und die Umgebung ist dieselbe, bevor das Programm ausgeführt wird. Ich habe versucht , setzen libjli.soin der , LD_LIBRARY_PATHaber es macht keinen Unterschied machen.

Wie behebe ich diesen Fehler?

Joeforker
quelle

Antworten:

9

Die erste Möglichkeit, die mir in den Sinn kommt, libjli.soist, dass sie nur von root gelesen werden kann. Also Schritt eins:

ls -l $(locate libjli.so)

Wenn es sich an einem ungeraden Ort befindet (nicht in /usr/liboder /lib), erstellen Sie die Datei /etc/ld.so.conf.d/java.confmit dem Pfad zu dem Verzeichnis, das enthält, libjli.sound führen Sie es /sbin/ldconfigals root aus.

Führen Sie diesen Befehl einmal als root und einmal als Nicht-root-Benutzer aus, um weitere Informationen zur Fehlerbehebung zu erhalten:

ldd java

In einer vernünftigen Welt wäre die Ausgabe der beiden identisch. Wie sie sich unterscheiden, sollte Ihnen viel darüber erzählen, warum dies fehlschlägt.

Insyte
quelle
Meine Güte, ich hatte LD_LIBRARY_PATH gesetzt, ich dachte, ldconfig's conf wäre fruchtlos. ldd java gibt einen relativen Pfad zurück, der '..' für libjli enthält. Ich denke, das hat nicht geklappt, da die Packager auf diesen speziellen Java 1.6.0 Update 16 FCS-Client gehofft hatten.
Joeforker