java使用jacob調用c#.net程序

七月 1st, 2010 by 尋道者


必備程序:jacob,下載地址爲:jacobBin_17.zip
一、使用vs2008或者vs2010新建一個Windows類庫程序,項目名稱就叫InvokeCSharp,再新建一個類:ExampleClass,具體代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace InvokeCSharp
{
    /// <summary>
    /// GUID自動生成就好了
    /// </summary>
    [Guid("C41D14FD-F719-41fc-94CD-4B64D19F44B0")]
    public interface IExampleClass
    {
        /// <summary>
        /// [DispId(1)]爲方法的COM調度標識符,如果有多個方法可相應的在每個方法前面加[DispId(2)], [DispId(3)]
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        [DispId(1)]
        string HelloJava(string name);
    }
    [Guid("70FE7452-0D4B-4717-8352-FEB0F6E830C1"),
    ClassInterface(ClassInterfaceType.None)]
    public class ExampleClass : IExampleClass
    {
        public ExampleClass() { }
        public string HelloJava(string name)
        {
            return "你好,Java傳遞過來的參數爲:" + name;
        }
    }
}

需要注意的是編譯前的配置步驟,主要有以下幾步:
1、解決方案資源管理器中右鍵點擊項目名稱“InvokeCSharp”,選擇屬性
2、在“應用程序”頁籤中,點擊“程序集信息”按鈕,在彈出的對話框中勾上最後一個複選框“使程序集COM可見”
3、在“生成”頁籤中,勾上最後一個複選框“爲COM互操作註冊”
4、生成“InvokeCSharp”項目
5、在項目的Debug/bin文件夾下會有這樣幾個文件:一個是InvokeCSharp.dll,另一個是InvokeCSharp.tlb,這個就是我們要的COM程序
6、最後,註冊COM,打開“Visual Studio 命令提示”,進入InvokeCSharp項目的Debug/bin文件夾,運行“regasm InvokeCSharp.dll /tlb:InvokeCSharp.tlb”,這樣就註冊了COM,regasm爲.NET Framework 工具中的程序集註冊工具。註冊成功後,每次C#程序有修改,都不再需要重新註冊了
二、jacob下載完成解壓後,將jacob.dll複製到Windows/system32/,jacob.jar複製到Java項目中
三、打開Eclipse,新建一個Java Project,名字叫:JavaInvokeCSharp,然後新建一個帶有main的類,就叫JavaInvokeCSharpClass,代碼如下:

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;  

public class JavaInvokeCSharpClass
{
	public static void main(String[] args)
	{
		try
		{
			ActiveXComponent dotnetCom = new ActiveXComponent("InvokeCSharp.ExampleClass");
			Variant var = Dispatch.call(dotnetCom,"HelloJava","Jacob真是個好東東");
			String str  = var.toString();
			System.out.println(str);
		}
		catch (Exception ex)
		{
			ex.printStackTrace();
		}
	}
}

運行該類,會輸出:你好,Java傳遞過來的參數爲:Jacob真是個好東東

這樣,Java通過jacob調用c#程序就完成了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章