zoukankan      html  css  js  c++  java
  • 【开发者笔记】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;
            }
    

    五、说一下我遇到的坑

      调用文件读写代码会出错,猜测原因是java中某些类在ikmv中没有实现,没有验证。

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

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

      

  • 相关阅读:
    还做开发!重新学习纪念一下先
    NOD32中小企业服务器版部署方法
    我买车了,写个总结
    Windows Server 2008 各个版本微软官方下载
    SQLServer2008过程中因性能计数器不一致导致无法安装的解决方法
    自建邮件服务器的注意事项
    01.Linux下C语言编程环境检查
    wcf部署到IIS宿主上报错
    Win7 开发WCF时 提示 进程不具有此命名空间的访问权限
    SQLServer2008设置 开启远程连接 (转)
  • 原文地址:https://www.cnblogs.com/wyongbo/p/java_to_csharp.html
Copyright © 2011-2022 走看看