簡體   English   中英

Eclipse導出的Runnable Jar無法處理java.lang.UnsatisfiedLinkError異常

[英]Eclipse exported Runnable Jar fails througing java.lang.UnsatisfiedLinkError exception

這個問題是一個著名的問題,有很多類似的問題,但是沒有解決方案對我有幫助。 因此,請不要將我的問題標記為重復。

我用Java開發了一個使用外部dll的小型應用程序。 在eclipse中,一切似乎都工作正常,但是一旦我導出到可運行的jar並使用java -jar myapplication.jar運行,它將拋出以下異常:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Testing.dal.LoggingAccess.__LoggingAccess0(Lnet/sf/jni4net/inj/IClrProxy;Ljava/lang/String;)V
        at Testing.dal.LoggingAccess.__LoggingAccess0(Native Method)
        at Testing.dal.LoggingAccess.<init>(LoggingAccess.java:25)
        at Program.listItems(Program.java:32)
        at Program.main(Program.java:27)

我已嘗試完成其他答案中建議的幾乎所有操作,但不幸的是,沒有任何操作對我有用。 我試圖設置java.library.path ,但是我不知道我是否正確地進行了設置。 我不是Java開發人員,因此Java世界對我來說是全新的。 所以我可能做錯了方式。 如果您能給我任何有關如何解決此問題的提示,那將是很棒的。

我自己就能解決這個問題。

所需的庫在正確的位置,但是我必須在java項目中引用它。 問題是,我不想像許多帖子中建議的那樣玩弄Path(環境變量)或將庫復制到system32文件夾。 那就是為什么我在主要方法的開頭添加了System.Laod(new java.io.File("path to the dll").getAbsolutePath())的原因。

許多人建議提及不帶.dll擴展名的庫名,但對我來說,它僅適用於.dll。 此外,我不僅要加載所需的庫,還要加載我的庫所依賴的所有庫。 例如:我的庫依賴於EntityFramework.dll ,因此我必須在主要方法中包括以下內容:

System.load(new java.io.File("path/EntityFramework.dll").getAbsolutePath());

將項目導出到可運行的jar文件中,並使用語句java -jar exported-file.jar從cmd進行了測試java -jar exported-file.jar ,我便能夠在控制台中正確看到輸出。 我只是發布了此答案,以防有人遇到此類錯誤並正在尋找解決方案。

暫無
暫無

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

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