【开发者笔记】c# 调用java代码

一、需求阐述

  java实现的一个算法,想翻译成c#,翻译代码之后发现有bug,于是不调试了。直接将jar打包成dll拿来用。

二、原理说明

  jar可以通过ikvmc工具打包成dll,然后在项目中引入该dll和相应的dl后便可直接调用。

三、流程

  1、打包jar,可通过myeclipse右键项目,export为jar就可以了。java项目结构:

  2、生成dll,下载IKVMC工具:https://sourceforge.net/projects/ikvm/files/

    

  点击绿色按钮即可。下载后解压文件,解压后目录如下:

  将bin目录加入到系统环境变量中,这个工具是用来将jar转换成dll的,加入变量之后方便随处调用。

  切换目录到生成的jar目录,运行:ikvmc -out:id3d.dll id3d.jar  (前面是dll名称,后面是jar名称),生成结果如下:

  

  c#项目中引入id3d.dll 文件,在引入刚刚bin目录的IKVM.OpenJDK.Core.dll、IKVM.Runtime.dll、IKVM.Runtime.JNI.dll 文件。

  

  到此为止,可以编写c#代码了。

4、书写C# 代码

  

  如图,可通过包名直接调用类。。

  另外,引入了上述三个ikvm的dll之后,还可以在c#中直接书写 java代码哟。

  来我们试一试:

 /// <summary>
        /// 将c#中Dictionary 内容复制到java的HashMap中
        /// </summary>
        /// <param name="dic"></param>
        /// <returns></returns>
        public java.util.Map getMap(Dictionary<string, Object> dic) {
            java.util.Map ret = new java.util.HashMap();
            foreach (KeyValuePair<string,Object> item in dic)
            {
                ret.put(item.Key,item.Value);
            }

            return ret;
        }

  

   感谢做基础技术的前辈们,让我们现在有这么多方便的工具可用!

附上ikvm百度网盘链接:https://pan.baidu.com/s/1OIc0h17jLNeDWDBRZjVNNQ 密码:xz6o

  

猜你喜欢

转载自www.cnblogs.com/wyongbo/p/java_to_csharp.html