国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

關(guān)于使用JNA爬過的坑,JNA路徑問題

2019-11-14 08:57:34
字體:
供稿:網(wǎng)友

我是抱著吐槽的態(tài)度來發(fā)這篇博客的,真坑!百度找了好久,好不容易才一點一點摸索實驗出來,就是一個爬坑之旅。


一號坑:32位JDK

這個屬于我小白了,具體報了 Native library (win32-x86/sdtapi.dll) not found之類的錯誤。 后來換了一個eclipse自帶的32位報 Unsupported major.minor version 51.0,原來用了jdk1.6。沒辦法,重新下載換過來。你妹的JNA只能用32位,我16G內(nèi)存多少年沒用過32位JDK了。

二號坑:路徑問題

(CLibrary) Native.loadLibrary(filePath, CLibrary.class);

這里面的filePath,很多文章里面是直接寫文件名,然后把dll文件放到環(huán)境變量的目錄里面,比如什么C:/windows/system32,還有jdk的bin目錄。我只想說,你們煩不煩,做個項目還要到處放文件,誤人子弟。就不能放到項目里面帶著走? 于是我開始用CLibrary.class.getResource(“”).getPath(),于是幾個超級大的坑來了!!! 1、我的文件夾目錄中用過空格的,于是得到的地址會帶著URI轉(zhuǎn)義過的符號,坑了我很久,所以需要處理下!

CLibrary.class.getResource("").getPath().replaceAll("%20"," ");

2、dll文件絕對不能帶下劃線“_”,坑爹!!但是文件夾可以帶。 3、CLibrary.class.getResource(“”).getPath()的最前面居然會帶一條斜杠!?!,也就是得到的路徑類似“/D:/PRoject/test”,然后又是找不到路徑。這個卡了我又一會。于是最后路徑這樣了:

String filePath = CLibrary.class.getResource("").getPath().replaceFirst("/","").replaceAll("%20"," ")+"sdtapi.dll";

然后文件終于妥妥地放到了我的java文件旁邊: JNA dll文件路徑 這樣路徑不就順眼多了,比什么放到D盤目錄,放到環(huán)境變量目錄舒服多了。


好的,最后附上完整版demo代碼:

package com.modules.ksdll.test;import java.net.URL;import com.sun.jna.*;public class Test { public static void main(String[] args) { try { //調(diào)用方法 int result = CLibrary.sdtapi.InitComm(1001); System.out.println("result:"+result); } catch (Exception e) { e.printStackTrace(); } }}interface CLibrary extends Library { //絕對路徑的地址獲取,注意要去空格,特別坑 String filePath = CLibrary.class.getResource("").getPath().replaceFirst("/","").replaceAll("%20"," ")+"sdtapi.dll"; CLibrary sdtapi = (CLibrary) Native.loadLibrary(filePath, CLibrary.class); //動態(tài)鏈接庫中的方法 int InitComm(int port); //動態(tài)鏈接庫中的方法 int Authenticate(); //==============================================dll public method e}

注意這里面的InitComm都是dll文件里面的方法,如果不知道dll內(nèi)容的,下載一個DEPENDS.EXE進(jìn)行查看。

感謝大家,最后,如果大家有什么問題,請發(fā)送郵件到shangaokun@QQ.com大家一起探討。


上一篇:單鏈表的合并

下一篇:代理模式

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 泉州市| 丹寨县| 武隆县| 中方县| 皮山县| 新邵县| 和林格尔县| 江达县| 神池县| 井冈山市| 涟源市| 宝应县| 遵化市| 海口市| 方城县| 阜城县| 轮台县| 内黄县| 杭锦旗| 昌都县| 孙吴县| 大姚县| 新昌县| 清新县| 洛南县| 隆化县| 饶河县| 浏阳市| 正安县| 萨迦县| 桂平市| 崇左市| 南安市| 准格尔旗| 阜城县| 布拖县| 舒兰市| 九龙坡区| 彰武县| 冷水江市| 阿克陶县|