[英]Unable to load JVMCI shared library: libcrypt.so.1: cannot open shared object file: No such file or directory
[英]Cannot Open Shared Object file - C++ library in Java
我正在嘗試在Java代碼中使用C ++編譯的庫。 我將java.library.path
設置為/usr/local/lib/
並且在那里安裝了庫的所有.so
文件。
但是,當我嘗試運行Java應用程序時,會看到以下內容:
Native code library failed to load.
java.lang.UnsatisfiedLinkError: /usr/local/lib/libA.so: libB.so.2.4: cannot open shared object file: No such file or directory
但是文件似乎在那里:
ls /usr/local/lib/libB.so.2.4
lrwxrwxrwx 1 root root 20 Jan 24 16:33 /usr/local/lib/libB.so.2.4 -> libB.so.2.4.5
符號鏈接文件也存在。 知道為什么找不到該庫嗎?
Java能夠為庫A
( libA.so
)加載本機代碼,並且在運行該本機代碼時,它依賴libB.so
(但是,此時它在本機代碼中-在JVMs控件之外)。 此時,您必須使用系統上的本機庫。 通常的機制是設置LD_LIBRARY_PATH
環境變量或使用ldconfig
(根據手冊頁),其中部分內容是
ldconfig創建必要的鏈接並緩存到在命令行指定目錄,/ etc / ld.so.conf文件以及受信任目錄(/ lib和/ usr / lib)中找到的最新共享庫。 緩存由運行時鏈接程序ld.so或ld-linux.so使用。
如果使用的是WebLogic:確保在weblogic的wlstart
-script中有一個名為USTART_LD_LIB
的系統變量,該系統變量將覆蓋LD_LIBRARY_PATH
變量。 因此,您需要設置此變量,並將lib附加到此變量,同時還要設置LD_LIBRARY_PATH
。
原因是您無法在手動啟動應用程序之前繼續導出變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.