我是linux新手。我正嘗試在Ubuntu中使用Java加載SO文件。我在java方法「System.load(/home/ab/Downloads/libtesseract.so)」中指定的文件加載正常,但它的依賴文件放在與「libtesseract.so」相同的位置。這是我得到的錯誤消息。錯誤:UnSatisfiedLinkError並說「liblept.so.4」找不到。這個文件和libtesseract.so放在同一個位置。當我將「liblept.so.4」放在「/ lib」中時。它可以從這裏加載這個文件。所以我明白的是,它不適合Java加載依賴。它必須由Ubuntu加載。所以我嘗試了一個簡單的應用程序來加載這個通過設置PATH變量與所在文件的位置。並將java代碼導出到jar中,並嘗試從終端運行此jar文件,因爲路徑變量對於整個系統不是持久的。它運行良好。所以我試圖通過使用下面的代碼以編程方式執行相同的事情,以使其不起作用。請指教。 TIA無法在LInux中加載相關SO文件
代碼:
ProcessBuilder pb = new ProcessBuilder("/bin/sh");
Map<String, String> envMap = pb.environment();
envMap.put("LD_LIBRARY_PATH", "/home/ab/Downloads");
envMap.put("PATH", "/home/ab/Downloads");
Set<String> keys = envMap.keySet();
for(String key:keys)
{
System.out.println(key+" ==> "+envMap.get(key));
}
System.load("/home/ab/Downloads/libtesseract.so");
「所以我的理解是,它不適合Java加載相關的,它必須由Ubuntu加載。」 - 不,我相信這是JVM的工作。 –
感謝您的評論Damien ...爲什麼我說這是因爲我使用Java代碼加載的第一個或主要的SO加載正常,但是當這個主SO尋找其他從屬所以,它失敗時,其他依賴所以存在相同的位置。 – user578219