JNA調用DLL函數遇到的幾個問題

最近一個JSP項目須要用到分詞模塊,而分詞模塊實用C++寫成的DLL庫。因而上網搜各類方法,最後選擇了JNA做爲JSP調用DLL的工具。java

JNA(Java Native Access )提供一組Java工具類用於在運行期動態訪問系統本地庫(native library:如Window的dll)而不須要編寫任何Native/JNI代碼。開發人員只要在一個java接口中描述目標native library的函數與結構,JNA將自動實現Java接口到native function的映射。函數

JNA的使用方法有不少,這裏只總結下我遇到的問題:工具

DLL放置的路徑問題

JSP自己分爲bean的src目錄和WebRoot的腳本目錄,而咱們的DLL須要在src下的類中調用,因而遇到了將DLL和資源文件放置到什麼地方的問題。spa

最後解決方法:將調用的DLL和LIB文件拷貝到C:/Windows/System32目錄下能夠訪問。接口

解決過程:我試過將這些文件放到Src目錄下,而後用Class.class.getResource("/").getPath()這種方法獲得類的class路徑,再獲得資源文件的路徑,結果沒有成功。資源

DLL調用資源的路徑問題

DLL可能會調用其餘資源文件,好比我這裏須要用到詞典,路徑也是個問題,不過這個較爲簡單,很容易解決:開發

將資源文件目錄,拷貝到Src目錄下面。在程序中使用Class.class.getResource("/").getPath()得到編譯後的類所在的根目錄,再鏈接上資源文件便可。get

相關文章
相關標籤/搜索