Tidak dapat menemukan file objek bersama yang dibagikan libjli.so - tidak ada file atau direktori tersebut

8

Pada 64-bit RHEL5 yang menjalankan Java 1.6.0 pembaruan 16, root berhasil menjalankan program Java tetapi pengguna tidak bisa karena libjli.soseharusnya tidak dapat ditemukan. SELinux dimatikan dan lingkungannya sama sebelum program dijalankan. Saya sudah mencoba menempatkan libjli.sodi LD_LIBRARY_PATHtetapi tidak membuat perbedaan.

Bagaimana cara saya memperbaiki kesalahan ini?

joeforker
sumber

Jawaban:

9

Kemungkinan pertama yang muncul dalam pikiran adalah bahwa libjli.soitu hanya dapat dibaca oleh root. Jadi langkah pertama:

ls -l $(locate libjli.so)

Jika berada di lokasi yang ganjil (bukan di /usr/libatau /lib) buat file yang /etc/ld.so.conf.d/java.confberisi path ke direktori yang berisi libjli.sodan jalankan /sbin/ldconfigsebagai root.

Untuk info pemecahan masalah lainnya, jalankan perintah ini, sekali sebagai root dan sekali sebagai pengguna non-root:

ldd java

Di dunia yang waras, output keduanya akan identik. Perbedaannya harus memberi tahu Anda banyak tentang mengapa ini gagal.

Insyte
sumber
Sheesh, saya telah menetapkan LD_LIBRARY_PATH, saya pikir conf ldconfig tidak akan membuahkan hasil. ldd java mengembalikan path relatif yang berisi '..' untuk libjli, saya kira itu tidak berhasil seperti yang diharapkan oleh para pembuat paket untuk pembaruan Java 1.6.0 khusus 16 klien FCS ini.
joeforker