Java調用dll Java調用COM組件

1、JNative

JNative調用dll很方便,只是需要dll有導出函數,否則調不到。就是說要調用的方法必須是導出函數。如果不知道你的dll有沒有這個導出函數,可下載這個軟件查看——DLL函數查看器

下載JNative開源項目(百度之),解壓開,拿到三個文件,分別是:JNativeCpp.dlllibJNativeCpp.soJNative.jar  
——JNativeCpp.dll Windows下用的,拷貝到c:/windows / system32目錄下

如果不行,可能是64b系統,在c:/windows /SysWOW64文件夾下面再放一個

——libJNativeCpp.so Linux下的,拷貝到系統目錄下;

——JNative.jar 這是一個擴展包,導入工程LIB中或將其拷貝到jdk\jre\lib\ext 下,系統會自動加載。

例子:使用JNative組件調用一個測試應用服務器狀態的TestABC.dll文件,Dll文件中包含一個TestMain(String ip,int port)方法,返回一個整形的結果(1或0)

public static void main(String[] args) {
		System.loadLibrary("TestABC");
		JNative n = null;
		try {
			n = new JNative("TestABC", "TestMain");
			// n.setRetVal(Type.STRING);
			int i = 0;
			n.setParameter(i++, Type.STRING, "192.168.1.108");
			n.setParameter(i++, Type.INT, "" + 1000);
			n.invoke();
			return Integer.parseInt(n.getRetVal());
		} catch (NativeException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		}
	}


2、Jacob

Jacob調用COM組件,如果dll文件可以註冊爲COM組件,可以使用Jacob方式調用,很好用,而且不需要導出函數。

Jacob下載:點擊打開鏈接

例子:

第一步,註冊組件,註冊方式爲 開始——運行——輸入命令cmd——輸入命令regsvr32——空格——拖入要註冊的dll文件——回車

顯示成功,則註冊完成。

第二步,去註冊表中把你註冊com組件找到,一般命名方式是“dll名字+ . +後綴”,可以根據dll的名字找,這是獲取此com組件的關鍵,同時進一步判斷你註冊成功了。

第三步,寫代碼調用

ActiveXComponent axc = new ActiveXComponent("testcom.Test");//獲取對象
Dispatch dis = axc.getObject();

String str ="";//初始化
Variant v1 = new Variant(str,true);//輸出參數定義,必須這樣,否則得不到輸出參數的值

Variant v2=new Variant();//返回值定義
v2 = Dispatch.call(dis, "getFace", "100",200,v1);

System.out.println("輸出參數值:"+v1);
System.out.println("返回值:"+v2);
代碼解釋:調用方法時,注意此處有Java中沒有的概念,叫做輸出參數,用於返回值不夠時的傳值。輸出參數的定義如上,一般參數定義與Java相同,直接傳輸即可。

忘了說最初,需要把jacob解壓開,獲取裏面的dll文件,放到c:/windows / system32目錄,建議64b的系統再放一份到c:/windows /SysWOW64文件夾下。裏面的jacob.jar就不用多說了吧,放到項目裏導入就行啦。


發佈了15 篇原創文章 · 獲贊 0 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章