使用JNI的各位可能受夠了中間層的限制嚴格的JNI文件(就連方法名也要限制)临梗,當然蠢沿,可以使用javac和javah進行自動生成肩榕,但是依然比較繁瑣垮抗。JNA框架便是基于之上氏捞,可以讓開發(fā)者直接去調用C接口方法的一個框架。
調用步驟
添加jna支持
基于maven的項目冒版,可以在pom文件里面將jar包直接引入液茎。
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>4.5.0</version>
</dependency>
非maven項目,則可以將jar包下載下來辞嗡,添加到自己的項目里面捆等。
聲明方法
- 將dll文件加載進JVM(使用Native屬性加載)。加載方式如下:
CLibrary INSTANCE = (CLibrary) Native.loadLibrary("PR2", CLibrary.class);
2.方法聲明续室,依照dll提供的接口栋烤,聲明方法即可。
public boolean CITIC_PR2_CloseComPort();
public boolean CITIC_PR2_OpenComPort(int port, long BaudRate, char Parity, char ByteSize, char StopBits);
注意:接口名和參數(shù)數(shù)量和類型一定要做到和接口文件一致挺狰,這樣才可以做到正常調用明郭。
調用方法
使用CLibrary直接調取即可买窟。
public boolean open(){
boolean result = CLibrary.INSTANCE.CITIC_PR2_OpenComPort(3,9600,'N','8','1');
return result;
}
注意事項
關于dll加載
比較頭大的問題就是加載路徑。在這之前薯定,首先一定要搞清楚自己的dll是32位還是64位始绍,非常關鍵,因為這涉及到我們采用什么樣的jdk去調用的問題话侄。實驗之后亏推,得到如下結果:32位的jdk調用32位的dll,64位jdk調用64位dll满葛。否則會報dll無法找到的錯誤径簿。
關于dll存放位置
個人建議32位dll直接放到32位的jdk目錄下面的bin文件夾。64位放到64位的jdk目錄的bin文件夾嘀韧。