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ù)的基本名稱(chēng),但.dll結(jié)尾不能帶。因此,/path/to/something.dll你只需使用System.loadLibrary('something')。
你還需要查看所獲得的確切信息UnsatisfiedLinkError。如果顯示類(lèi)似以下內(nèi)容:
Exception in thread 'main' java.lang.UnsatisfiedLinkError: no foo in java.library.path
那么它將無(wú)法在你的或中找到foo庫(kù)(foo.dll)。如果顯示類(lèi)似以下內(nèi)容:PATHjava.library.path
Exception in thread 'main' java.lang.UnsatisfiedLinkError: com.example.program.ClassName.foo()V
則庫(kù)本身有問(wèn)題,因?yàn)镴ava無(wú)法將應(yīng)用程序中的本機(jī)Java函數(shù)映射到其實(shí)際本機(jī)副本。
首先,我會(huì)在你的System.loadLibrary()呼叫周?chē)涗浺恍┤罩?,以查看該呼叫是否正常?zhí)行。如果它引發(fā)異?;虿辉趯?shí)際執(zhí)行的代碼路徑中,那么你將始終得到UnsatisfiedLinkError上面解釋的后一種類(lèi)型。
loadLibrary()附帶說(shuō)明一下,大多數(shù)人使用本機(jī)方法將調(diào)用放入類(lèi)中的靜態(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. node.js - webpack-dev-server正常運(yùn)行,webpack打包卻出錯(cuò),怎么辦?2. mysql 5個(gè)left關(guān)鍵 然后再用搜索條件 幾千條數(shù)據(jù)就會(huì)卡,如何解決呢3. javascript - webpack編譯后的文件不生效,未編譯的文件生效4. android - 哪位大神知道java后臺(tái)的api接口的對(duì)象傳到前端后輸入日期報(bào)錯(cuò),是什么情況?求大神指點(diǎn)5. 這是什么情況???6. thinkphp3 count()方法必須加上字段?7. 怎么php怎么通過(guò)數(shù)組顯示sql查詢(xún)結(jié)果呢,查詢(xún)結(jié)果有多條,如圖。我要forsearch里面echo8. 輸入地址報(bào)以下截圖錯(cuò)誤,怎么辦?9. javascript - 項(xiàng)目的公共文件如圖片JS等文件放在 云上,webroot只放jsp文件,怎么將靜態(tài)文件通過(guò)配置文件引入,sp求大神指導(dǎo)10. python中return 語(yǔ)句與 分支語(yǔ)句連用問(wèn)題
