質問: debianでの起動の問題java: "共有ライブラリのロード中にエラーが発生しました:libjli.so" javaを起動しようとしています:$ java -version java: error while loading shared libraries: libjli.so: cannot open shared object file: no such file or directory $ ldd /usr/lib/jvm/java-6-openjdk/jre/bin/java linux-gate.so.1 => (0xb779f000) libz.so.1 => /usr/lib/libz.so.1 (0xb7780000) libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xb7767000) libjli.so => /usr/lib/jvm/java-6-openjdk/jre/bin/../lib/i386/jli/libjli.so (0xb7762000) libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb775e000) libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7603000) /lib/ld-linux.so.2 (0xb77a0000 $ ls /usr/lib/jvm/java-6-openjdk/jre/bin/../lib/i386/jli/ libjli.so ただし、javaはrootの下で機能します:$ sudo java -version java version "1.6.0_18" openjdk runtime environment (icedtea6 1.8.7) (6b18-1.8.7-2~lenny1) openjdk client vm (build 14.0-b16, mixed mode, sharing) エラーなしで通常のユーザーとしてjavaを起動するにはどうすればよいですか?
回答: リンクの構成方法に注意してください。間違いが発生し、/ etc/bin/javaがバイナリに置き換えられたサーバーを見つけました。そのため、ライブラリが見つかりませんというエラーが表示されました。/usr/bin/javaを/ etc/alternatives/javaに再リンクすると、すべてが再び機能します。# namei -mx /usr/bin/java f: /usr/bin/java drwxr-xr-x / drwxr-xr-x usr drwxr-xr-x bin lrwxrwxrwx java -> /etc/alternatives/java drwxr-xr-x / drwxr-xr-x etc drwxr-xr-x alternatives lrwxrwxrwx java -> /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java drwxr-xr-x / drwxr-xr-x usr drwxr-xr-x lib drwxr-xr-x jvm lrwxrwxrwx jre-1.6.0-openjdk.x86_64 -> java-1.6.0-openjdk-1.6.0.0.x86_64/jre drwxr-xr-x java-1.6.0-openjdk-1.6.0.0.x86_64 drwxr-xr-x jre drwxr-xr-x bin -rwxr-xr-x java 私の勘は、openjdkがライブラリを探すときに何らかのパスの正規化を行うということです。