ikvm java 包_C# 使用IKVM.NET将Java jar包转换为dll文件

项目中遇到了无法正常跨语言加解密的问题,需要将jar文件转换为dll文件供c#调用。

一. 下载IKVM.NET及配置

解压后,需要配置环境变量,在"Path"中添加bin目录的路径。

二.转换dll

打开cmd,cd到jar包所在路径。 转换使用命令: ikvmc -target:library  jar包名称.jar  -r:依赖项1.dll -r:依赖项2.dll  -r:..........

注意:需要先将被依赖的jar包生成为dll ,并 在 "-r:"中指定,否则生成的dll会有错误,显示class not found等:

示例:将包含sm2国密加密算法的“bcprov-jdk16-145.jar”转换为dll --->>

9ce7529d0b09cd455acf853da29ce9b3.png

以此为例,bcporv.jar包需要依赖 junit.jar , 则先要生成junit.dll 。

log4j.jar依赖了javax.jsm以及mail.jar 则先生成javax.jsm.dll和mail.dll .......

以此类推,直到所有依赖项都成功生成为dll后,使用 -r:xxxxxx.dll 加上依赖项的dll再进行生成,

例如生成log4j.dll时:ikvmc -target:library log4j.jar -r:mail-1.4.7.dll -r:javax.jms.dll

841cd260979789327d0e4801ff206547.png

也可以使用 -out:xxx.dll  指定生成dll的名称 : ikvmc -target:library crypWeb.jar-out:crpytoForDotNet.dll  -r:log4j-1.2.17.dll -r:commons-lang-2.5.0.dll -r:bcprov-jdk16-145.dll -r:commons-codec-1.14.dll

另外,如果出现skiping class ,可以忽略,因为ikvm提供的dll中已存在

0a534c248e1da5aba065d04f2332137d.png

dll生成成功后(没有warning时),即可以像普通dll一样添加引用到c#项目

三. C#中调用

需要引用IKVM.NET提供的dll 。 到ikvm安装路径的bin目录中 找到相关的dll, 一般只需要IKVM.OpenJDK.Core.dll 。之后便可以调用dll中的java方法

85f68fd180101f77deeea0605736678f.png

另外:引用生成的dll时,中途产生的依赖项的dll也要引用 ;jar包中的包名就是命名空间名称

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值