天天看點

Linux通過JNI加載動态so連結出現java.lang.UnsatisfiedLinkError異常解決

    在Linux環境使用JNI加載動态連結庫中提供的本地方法時,經常會出現java.lang.UnsatisfiedLinkError,主要原因就是動态連結庫對依賴庫的路徑查找範圍中并不包括目前路徑,一般會包括LD_LIBRARY_PATH環境變量的路徑以及/etc/ld.so.conf中配置的路徑,以及預設的路徑比如/usr/lib和/usr/lib64。更新/etc/ld.so.conf之後需要執行ldconfig指令更新連結庫緩存。

    另外通過執行ldd命名,可以進行測試,如果沒有出現依賴not found,說明一般沒有問題:

[[email protected] uapweb]# ldd libKCBPCliJNI.so 
ldd: warning: you do not have execution permission for `./libKCBPCliJNI.so'
        linux-vdso.so.1 =>  (0x00007fff235ff000)
        libkcbpcli.so => /usr/lib64/uapweb/libkcbpcli.so (0x00007f53b8e57000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f53b8c53000)
        libkcxpmq.so => /usr/lib64/uapweb/libkcxpmq.so (0x00007f53b8a0c000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f53b8706000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f53b8482000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f53b826b000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f53b7ed8000)
        libkcbpcrypt.so => /usr/lib64/uapweb/libkcbpcrypt.so (0x00007f53b7ccd000)
        /lib64/ld-linux-x86-64.so.2 (0x000000331a600000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f53b7aaf000)
           

繼續閱讀