JAVA jar包轉.NET dll文件注意事項

一、配置等

javaVersion :”1.8.0_151”

IKVM:ikvm-8.1.5717.0

IKVM下載地址:鏈接:https://pan.baidu.com/s/1mYutk0yghHxw2rOgFpDKJw

提取碼:0777

IKVM需要配置環境 :將IKVM.NET的bin文件夾的地址添加到環境變量。

計算機右鍵屬性–高級系統設置–高級–環境變量–在系統變量中找到PATH–將bin文件夾的地址添加進去

 

 

二、碰到的問題及解決方案

1.如果一個包依賴多個包怎麼處理

 

2.C#中怎麼調用?

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

 

 

另外:引用生成的dll時,中途產生的依賴項的dll也要引用 ;

調用方法時引入命名空間,jar包中的包名就是命名空間名稱,不是dll的名稱,比如包名一般是com.xxx.xxx,那麼C#的命名空間就是com.xxx.xxx。

3.打包時如果有內部類需要將內部類的.class文件也放到jar包目錄下。

4.如果執行發現C#代碼執行結果與JAVA代碼執行結果不一致,可能原因爲IKVM的版本和文件不是最新,需要使用NewGet獲取對應版本的IKVM。

5.包含main函數的jar包應該怎麼處理?

包含main函數的jar包用命令ikvmc 執行的時候會直接生成.exe文件。我們需要dll文件應該直接使用-out命令指定文件格式。如:

Ikvmc -target:library xxx.xxx.jar -r:xxx.xxx.dll -out:xxx.xxx.dll

6.warning提示需要處理嗎?應該怎麼處理?

 

一般是warning class xxx not found

這種警告一般需要處理,因爲有可能使用的方法就用到了警告類裏面的方法。一般警告了哪個類,建議使用IDEA maven工具下載對應的jar包,將jar包轉換成dll文件。再引入到需要生產的jar包中。

7.依賴包太多導致需要引入的dll文件多怎麼處理?

一般我們依賴什麼包就處理成dll文件再使用IKVMC命令引入到目標dll內,如果嫌棄項目需要引入的dll文件過多,那可以在打包目標jar包的時候將依賴包打包到一起,後再處理目標jar包。

將依賴包一起打包:自己查吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章