java.library.path中的java.lang.UnsatisfiedLinkError否*****dll
為了System.loadLibrary()正常工作,該庫(在Windows上為DLL)必須位于目錄中PATH 或java.library.path系統屬性中列出的路徑上的某個目錄中(這樣你就可以啟動Java了java -Djava.library.path=/path/to/dir)。
此外,對于loadLibrary(),你可以指定庫的基本名稱,但.dll結尾不能帶。因此,/path/to/something.dll你只需使用System.loadLibrary('something')。
你還需要查看所獲得的確切信息UnsatisfiedLinkError。如果顯示類似以下內容:
Exception in thread 'main' java.lang.UnsatisfiedLinkError: no foo in java.library.path
那么它將無法在你的或中找到foo庫(foo.dll)。如果顯示類似以下內容:PATHjava.library.path
Exception in thread 'main' java.lang.UnsatisfiedLinkError: com.example.program.ClassName.foo()V
則庫本身有問題,因為Java無法將應用程序中的本機Java函數映射到其實際本機副本。
首先,我會在你的System.loadLibrary()呼叫周圍記錄一些日志,以查看該呼叫是否正常執行。如果它引發異?;虿辉趯嶋H執行的代碼路徑中,那么你將始終得到UnsatisfiedLinkError上面解釋的后一種類型。
loadLibrary()附帶說明一下,大多數人使用本機方法將調用放入類中的靜態初始化程序塊中,以確保始終始終執行一次:
class Foo { static {System.loadLibrary(’foo’); } public Foo() { }}解決方法
如何在我的Web應用程序中加載自定義dll文件?我嘗試了以下方法,但失敗了。
復制了system32文件夾中所有必需的dll,并嘗試在Servlet構造函數中加載其中一個System.loadLibrary在tomcat_home/shared/lib和中復制了所需的dlltomcat_home/common/lib所有這些dll都在WEB-INF/libWeb應用程序中相關文章:
1. 在mybatis使用mysql的ON DUPLICATE KEY UPDATE語法實現存在即更新應該使用哪個標簽?2. mysql - 數據庫建字段,默認值空和empty string有什么區別 1103. mysql - 這種分級一對多,且分級不平衡的模型該怎么設計表?4. Navicat for mysql 中以json格式儲存的數據存在大量反斜杠,如何去除?5. mac OSX10.12.4 (16E195)下Mysql 5.7.18找不到配置文件my.cnf6. java - 數據庫查詢多表7. 新人求教MySQL關于判斷后拼接條件進行查詢的sql語句8. mysql - 千萬數據 分頁,當偏移量 原來越大時,怎么優化速度9. MySQL FOREIGN KEY 約束報錯10. mysql - 數據庫表中,兩個表互為外鍵參考如何解決
