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

首頁 > 學院 > 開發設計 > 正文

關于使用JNA爬過的坑,JNA路徑問題

2019-11-11 06:54:37
字體:
來源:轉載
供稿:網友

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


一號坑:32位JDK

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

二號坑:路徑問題

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

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

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盤目錄,放到環境變量目錄舒服多了。


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

package com.modules.ksdll.test;import java.net.URL;import com.sun.jna.*;public class Test { public static void main(String[] args) { try { //調用方法 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); //動態鏈接庫中的方法 int InitComm(int port); //動態鏈接庫中的方法 int Authenticate(); //==============================================dll public method e}

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

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浮山县| 池州市| 射阳县| 兖州市| 安溪县| 嘉黎县| 吉木乃县| 洪江市| 长白| 衢州市| 北流市| 独山县| 陆良县| 武邑县| 武冈市| 禹城市| 江孜县| 岐山县| 渭南市| 诸城市| 平陆县| 西充县| 信丰县| 娱乐| 正安县| 瓦房店市| 吉林市| 太康县| 通榆县| 乐平市| 梨树县| 丰镇市| 江西省| 双柏县| 环江| 康马县| 四子王旗| 钦州市| 本溪| 无棣县| 恭城|