簡體   English   中英

Eclipse導出的Runnable Jar無法找到外部庫

[英]Eclipse exported Runnable Jar fails to locate external libraries

我有一個帶有兩個外部庫的Java項目。 一切在Eclipse中都運行良好,導出為可運行的JAR時沒有錯誤。 但是,當我使用java -jar myapplication.jar,通過命令行運行項目時java -jar myapplication.jar,它會拋出臭名昭著的java.lang.UnsatisfiedLinkError: no in java.library.path

我嘗試使用所有三個導出選項(提取,打包,復制)均未成功。

(使用日食)

為了使System.loadLibrary()正常工作,該庫(在Windows上為DLL)必須位於PATH上某個目錄中或java.library.path系統屬性中列出的路徑中的某個目錄中(因此,您可以像java -Djava.library.path = / path / to / dir)。

此外,對於loadLibrary(),您可以指定庫的基本名稱,但結尾不要.dll。 因此,對於/path/to/something.dll,您只需使用System.loadLibrary(“ something”)。

您還需要查看獲得的確切UnsatisfiedLinkError。 如果顯示類似以下內容:

線程“主”中的異常java.lang.UnsatisfiedLinkError:java.library.path中沒有foo,因此它無法在PATH或java.library.path中找到foo庫(foo.dll)。 如果顯示類似以下內容:

線程“主”中的異常java.lang.UnsatisfiedLinkError:com.example.program.ClassName.foo()V,然后庫本身出了點問題,因為Java無法將應用程序中的本機Java函數映射到其實際的本地副本。

首先,我將在您的System.loadLibrary()調用周圍進行一些日志記錄,以查看其是否正常執行。 如果它引發異常或不在實際執行的代碼路徑中,那么您將始終得到上面解釋的后一種類型的UnsatisfiedLinkError。

附帶說明一下,大多數人使用本機方法將其loadLibrary()調用放入類中的靜態初始化程序塊中,以確保始終始終執行一次:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM