java.library.path中的java.lang.UnsatisfiedLinkError否*****dll
為了System.loadLibrary()正常工作,該庫(kù)(在Windows上為DLL)必須位于目錄中PATH 或java.library.path系統(tǒng)屬性中列出的路徑上的某個(gè)目錄中(這樣你就可以啟動(dòng)Java了java -Djava.library.path=/path/to/dir)。
此外,對(duì)于loadLibrary(),你可以指定庫(kù)的基本名稱,但.dll結(jié)尾不能帶。因此,/path/to/something.dll你只需使用System.loadLibrary('something')。
你還需要查看所獲得的確切信息UnsatisfiedLinkError。如果顯示類似以下內(nèi)容:
Exception in thread 'main' java.lang.UnsatisfiedLinkError: no foo in java.library.path
那么它將無法在你的或中找到foo庫(kù)(foo.dll)。如果顯示類似以下內(nèi)容:PATHjava.library.path
Exception in thread 'main' java.lang.UnsatisfiedLinkError: com.example.program.ClassName.foo()V
則庫(kù)本身有問題,因?yàn)镴ava無法將應(yīng)用程序中的本機(jī)Java函數(shù)映射到其實(shí)際本機(jī)副本。
首先,我會(huì)在你的System.loadLibrary()呼叫周圍記錄一些日志,以查看該呼叫是否正常執(zhí)行。如果它引發(fā)異常或不在實(shí)際執(zhí)行的代碼路徑中,那么你將始終得到UnsatisfiedLinkError上面解釋的后一種類型。
loadLibrary()附帶說明一下,大多數(shù)人使用本機(jī)方法將調(diào)用放入類中的靜態(tài)初始化程序塊中,以確保始終始終執(zhí)行一次:
class Foo { static {System.loadLibrary(’foo’); } public Foo() { }}解決方法
如何在我的Web應(yīng)用程序中加載自定義dll文件?我嘗試了以下方法,但失敗了。
復(fù)制了system32文件夾中所有必需的dll,并嘗試在Servlet構(gòu)造函數(shù)中加載其中一個(gè)System.loadLibrary在tomcat_home/shared/lib和中復(fù)制了所需的dlltomcat_home/common/lib所有這些dll都在WEB-INF/libWeb應(yīng)用程序中相關(guān)文章:
1. python - 啟動(dòng)Eric6時(shí)報(bào)錯(cuò):’qscintilla_zh_CN’ could not be loaded2. android下css3動(dòng)畫非常卡,GPU也不差啊3. MySQL中的enum類型有什么優(yōu)點(diǎn)?4. css3 - 純css實(shí)現(xiàn)點(diǎn)擊特效5. mysql - 記得以前在哪里看過一個(gè)估算時(shí)間的網(wǎng)站6. css3 - 我想要背景長(zhǎng)度變化,而文字不移動(dòng),要怎么修改呢7. javascript - 關(guān)于<a>元素與<input>元素的JS事件運(yùn)行問題8. javascript - vue 怎么渲染自定義組件9. javascript - 同步方式寫異步到底指什么?10. python - 有什么好的可以收集貨幣基金的資源?
