C# 使用IKVM.NET將Java jar包轉換為dll文件


項目中遇到了無法正常跨語言加解密的問題,需要將jar文件轉換為dll文件供c#調用。

一. 下載IKVM.NET及配置

下載地址:http://www.ikvm.net/download.html

解壓后,需要配置環境變量,在"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 --->>

以此為例,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

 也可以使用 -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中已存在

dll生成成功后(沒有warning時),即可以像普通dll一樣添加引用到c#項目

三. C#中調用

需要引用IKVM.NET提供的dll 。 到ikvm安裝路徑的bin目錄中 找到相關的dll, 一般只需要IKVM.OpenJDK.Core.dll 。之后便可以調用dll中的java方法

 

 

 另外:引用生成的dll時,中途產生的依賴項的dll也要引用 ;jar包中的包名就是命名空間名稱

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM