@前言: 最近我的项目遇到一个问题,就是有一个需要是cs端数据须要加密(应用sm4的加密办法),后端接管须要解密,然而cs端是c#写的 后端是java写的,两端的加密形式 的后果都会有所不同,当然还是咱们这帮菜逼对算法这块钻研不深。前面找了调用两头的c语言去弄 还是没有搞好,最初找的了一种办法,就是把java代码打成jar包 而后转换成dll,供cs端调用。

步骤 一、将曾经编译后的java中Class文件进行打包;打包命令JAR

打包:能够应用命令 也能够应用eclipse 和idea 这样的工具间接打包 【源码会放在最初】

二、到IKVM官方网站下载IKVM须要的组件 http://www.ikvm.net/

网上有一大堆教程 有很多没有提到jdk版本跟这个有关系,如图所示的反对1.8版本的,这个不向低版本兼容哦,如果找不到这个版本的ikvm能够私聊我。

三、设置门路

解压ikvm-8.1.5717.0.zip,能够设置IKVM_HOME的门路到环境变量,也能够间接应用固定的门路配置进去,我这里是 间接把残缺的门路配置进去的

四、将java的jar包转换为.dll控件

应用的命令:ikvmc -target:library xxx.jar 和 ikvmc -target:library -reference:需援用A.dll -reference:需援用B.dll 主的.jar

前者命令是把jar打成dll 后者是把jar打成dll的同时 退出他须要内部引入的dll包(原jar包援用)

ps:我这边是把jar包都复制到ikvm的bin目录下 ,并且在bin的目录下应用的ikvmc命令,如果是应用idea引入的是把所有的lib包放在一个目录下 在modules引入的,只须要把主jar包打成一个dll就行了 其余不用援用到cs外面去,elipse则是都须要打成dll 都引入。【这里是看理论状况而言,最好是都打成dll引入】

五、在C#我的项目中增加所需的控件

#### 前提须要下载:ikvm,不然会报错

#### 援用打包好的dll

当初就能够应用了

java源码地址:https://gitee.com/ten-ken/sec...

本文来源于:程序员ken,专属平台有csdn、思否(SegmentFault)、 简书、 开源中国(oschina)、掘金,转载请注明出处。