最近在工程开发中小编遇到一个问题,这个工程的开发语言用的C#(你没有看错,竟然不是Java
不服私信啊,小编就是喜欢Java)
问题是:业务上需要调用一些加密、解密、甚至硬件设备的接口,但是接口的所有实现方式是其它平台给的Java的Jar包,这可如何是好,通过查阅资料找到了一个解决方案(C#调用Jar包)
文末有惊喜哦!!
解决方案:
-
将Jar包转换成dll
-
安装ikvm包
-
引入转换好的dll
-
可以调用
第一步:
-
需要用到一个工具,下载地址:https://share.weiyun.com/N3mhQTeo
-
打开cmd窗口,然后cd到"ikvm.exe"所在文件目录中,然后输入以下命令:
命令分两种:
// 第一种:
ikvmc -target:library xxx.jar
// 第二种
ikvmc -target:library -reference:A.dll -reference:B.dll C.jar
解释:
-
第一种是直接生成dll,前提是这个jar包不依赖别的引用。
-
第二种是我们的jar包依赖于别的jar包,比如说:C.jar依赖于B.jar和A.jar,那我们就要先生成B.dll和A.dll,然后再执行命令
第二步:
visual studio的nuget中下载安装ikvm,作者是jeroen frijters
第三步:
将转换好的dll引入项目
第四步:
using dll名字 ,直接调用
惊喜来喽 ····· 小飞棍来喽 ·····
最后的解决方案是开发了一个Java中转服务,Java服务端访问外部平台,C#工程通过访问Java服务暴露出的Restful接口间接访问平台。(惊不惊喜,意不意外)
所以上述的解决方案你要自己去体会,小编没有进行验证哦!!
来个关注?