[英]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.