java能否调用com_java调用com
一、C#寫com組件
開發環境 vs2005
1、新建工程:ClassLibrary1?????? //根據自己需要取工程名
2、右鍵點擊工程->應用程序->程序集信息->使程序集com可見,打上勾
右鍵點擊工程->生成->為com Interop注冊 打上勾
3、設置強簽名
打開Visual Studio Command Prompt 輸入:sn -k TestComkey.snk 生成TestComkey.snk 文件,注意路徑。
在簽名 標簽中選中 為程序集簽名,選擇剛剛生成的強名稱文件TestComkey.snk 。
4、GuidAttribute中的Guid
通過點擊工具->創建GUID->選擇4->New Guid->copy->替換C# 代碼4 中的兩個 GUID?值
5、C#代碼
C#代碼中必須定義了接口,才可以按照此方法實現調用。
using?System;
using?System.Collections.Generic;
using?System.Text;
using?System.Runtime.InteropServices;
namespace?TestCom???? //命名空間名稱,根據自己需要自定義。這里我們取名TestCom
{
[Guid("E9BCF867-CD81-40d0-9591-ED28D1ED2B53")]???? //GUID值
public?interface?IEncrypt??? //定義接口名
{
[DispId(1)]
string?GetEncrypt(string?str,string?str2);??? //返回的字符串值,與需要調用的類的方法名一致。
}
[Guid("33A6E58D-E1F5-4b53-B2E2-03B9F8BA2FAD"),?ClassInterface(ClassInterfaceType.None)]???? //GUID值
public?class?Encrypt:IEncrypt????//類名,接口名?,必須定義接口
{
public?Encrypt(){}
public?string?GetEncrypt(string?str,string?str2)?????//定義具有兩個參數的方法,返回字符串。根據各自需要定義。
{
return??"測試:?"+str+" | "+str2;
}
}
}
6、編譯程序,Debug目錄中會生成 ClassLibrary1.dll 和ClassLibrary1.tlb。
7、將ClassLibrary1.dll 和ClassLibrary1.tlb復制到JAVA開發環境中,JAVA環境中需要安裝對應版本的.net framework。
8、在JAVA開發環境中注冊新生成的com組件,在客戶環境中,通過regasm.exe注冊com組件。
regasm.exe的默認安裝路徑為:C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe
手工注冊COM方法:運行命令regasm ClassLibrary1.DLL /tlb:ClassLibrary1.tlb
9、強簽名的dll文件添加到緩存中。
執行命令:gacutil -i ClassLibrary1.DLL (執行這個命令需要TestCom.DLL 具有強名稱)
gacutil程序在VS目錄 Microsoft Visual Studio 8\SDK\v2.0\Bin 目錄下,復制到JAVA環境中。
10、查看注冊表regedit,HKEY_CLASSES_ROOT中是否有TestCom.Encrypt 項,如果有說明注冊COM成功。如果沒有,請重新注冊。
二、Java調用Com
2、在開發環境中引入jacob.jar,放到WEB-INF\Llib目錄下。
3、拷貝jacob-1.15-M4-x86.dll 文件到 C:\Windows\System32目錄,如果是Web應用的話還需要拷貝到jdk1.5.0_16\bin目錄(jdk安裝目錄下的bin目錄)
4、java調用代碼 test.java
import?com.jacob.activeX.ActiveXComponent;
import?com.jacob.com.ComThread;
import?com.jacob.com.Dispatch;
import?com.jacob.com.Variant;
public?class?test?{
/**
*?@param?args
*/
public?static?void?main(String[]?args)?{
//?TODO?Auto-generated?method?stub
try{
ActiveXComponent?dotnetCom?=?null;
dotnetCom?=?new?ActiveXComponent("TestCom.Encrypt");?????//需要調用的C#代碼中的命名空間名和類名。
Variant?var?=?Dispatch.call(dotnetCom,"GetEncrypt","第一個參數","第二個參數");???//需要調用的方法名和參數值
String?str??=?var.toString();? //返回需要的字符串
System.out.println(str);? //輸出得到的字符串。檢查結果是否正確。
}?catch?(Exception?ex)?{
ex.printStackTrace();
}
}
}
5、運行?test.java
輸出結果為:測試:?第一個參數 | 第二個參數
完成了Java調用.net DLL的方法!
總結
以上是生活随笔為你收集整理的java能否调用com_java调用com的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: e3是合法浮点数吗_下列哪些是不合法的浮
- 下一篇: java tomcat自动安装教程_To