在.Net中进行调用Java代码

背景:首先我的项目客户给我的是一段RSA 加密的Java代码,里面写的还有点复杂,直接使用C#重写的话对于我来说可能对我这个小菜鸟来说有些吃力,于是我就在网上找有没有简单的方法。

思路:网上的教程还是不少的,大概思路是Java文件-----编译成Class文件-----将Class文件打成Jar包-----将Jar包使用IKVM转换为DLL文件。然后DLL文件就是我们可以在C#中直接调用的啦!

第一步IKVM的官网进去直接无脑下载安装,然后就是要配置环境变量。
在Path下新建一个变量:如下图在这里插入图片描述
都配置好后,测试一下 这样就没什么问题啦!你已经迈出了第一步!在这里插入图片描述
第二步:将Java文件打成JAR包,嘻嘻嘻,我这里就不打包了,因为我不会呀,我让客户打包好发给我的,如下图:(由于文件名称可能少儿不宜,我就打上码了,大哥们别喷)
在这里插入图片描述
然后进CMD找到对应的路径,然后使用命令如下图:(第一个是要生成的DLL的文件名,第二个是你的JAR包的名称)
在这里插入图片描述
看到这里报警告了吧!别怂!同志们!只要思想不滑坡,方法总比困难多。虽然我不会JAVA但是能明显的看出来这是缺少依赖包了,接下来这个就是细活了,找到对应的包放到报警告的位置。一点点解决,你看我生成的DLL文件数量就知道有多头疼了吧。

第三步:当然是去测试我们的DLL文件能不能用啦
建立一个项目,我建的是控制台程序,然后引入必要的DLL文件。如下图,这几个DLL文件是必须要有的,缺一个都不行,这些DLL文件就在你IKVM安装目录的bin文件夹下都有。
在这里插入图片描述
直接using完调用!传入参数!
在这里插入图片描述
运行!没问题!(虽然返回的是false,但是程序是没有问题的,是我传参的问题)
在这里插入图片描述
好啦,到这里就结束了,写的不好,还请大佬们谅解。

小知识:我看了一下Java代码,是需要传入一个Map 而在C#中是Dictionary 我们直接传入Dictionary是会报错的。

public static 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;
        }

这个代码是传入一个Dictionary,返回一个Java对应的Map,然后我们就可以完美的解决这个问题啦!我是不是真的很棒棒呦~

猜你喜欢

转载自blog.csdn.net/qq_38365099/article/details/84960297
今日推荐