公司要做個跟設備打交道的web系統,需要java調用dll。搞java的同事說JNative看起來挺好使的,找俺幫忙調通。用的是1.3.1版本
- 環境設置。
JNative的調試信息需要打開才能更清楚些,要不總是說沒加載庫,跟沒說一樣。
System.setProperty("jnative.debug", "true");
如果調試信息里有System.LoadLibrary(),說明沒有加載JNativeCpp.dll,指定全路徑即可,雙斜杠哦。
System.setProperty("jnative.loadNative", "D:\\Test\\JNativeCpp.dll");
- lib庫路徑問題
- windows
在windows下需要把調用的dll路徑設置到環境變量PATH中,除非你不介意拷到win32中,dll依賴的庫也得在PATH或win32中。
- linux
linux下同樣需要設置環境變量,編輯bashrc,添加 export LD_LIBRARY=so路徑,依賴的庫也得在PATH中,除非都放在/usr/lib/下
- windows
- lib庫名稱問題
無論linux還是windows在JNative的構造函數中的lib庫名字為庫全名,包括擴展名dll、so,而且so需要包括前面的‘lib’,貌似與網上說的不太一樣。
- 資源釋放問題
有些設備需要先初始化在操作,最后釋放,所有功能都分散在不同函數中,JNative需要有個靜態的實例,每次創建調用函數時lib庫依舊是加載的。
順便吐槽下公司部署前2天才通知說在linux下部署,可憐我這linux、java雙小白。。。。。。