這一篇來紀錄一下如何使用IKVM讓C#的專案能呼叫Java的函式庫。
首先當然是下載最新的IKVM,下面是IKVM官網及其提供的下載連結。
https://www.ikvm.net/index.html
https://sourceforge.net/projects/ikvm/files/
下載下來是ZIP檔,直接解壓就能用了。但是最好把檔案路徑加到Windows的環境變數裡面以方便使用。不加環境變數的話,每次都要把檔案放到同一個資料夾下才能用。
設好環境變數之後,按win - Ctrl - R執行cmd,然後切換到JAR檔所在的位置,執行以下指令
ikvmc -target:library javaRunnableJAR.jar
執行畫面如下
Moira.jar是我使用的JAR檔,執行成功後會產生Moira.dll檔,這個檔就是要給C#使用的。下方會出現一堆warning,那是因為IKVM會很努力的在JAR裡面找各種lib,一定會有一堆他找不到的,但其實這些lib我們也沒有用到,所以在大多狀況下不會影響之後的使用。一般來說java專案裡面引用愈多lib,這裡就會出現愈多warning。
接下來就可以打開VS來開一個專案了,記得只能開.NET Framework的專案,因為目前IKVM只支援.NET Framework
然後打開Manage NuGet Packages
在Browse這裡搜尋IKVM就會出現一堆條目,請安裝第一個v8.1.xxxx這一個。下面有一堆v7.2的。v7開頭的是給JDK/JRE 1.7以下用的。v8開頭的是給JDK/JRE1.8以上用的。不過我不知道JDK版本太新會不會有問題,所以我的java環境是設成1.8。
然後下面有一堆JDK.Core等,如果只安裝JDK.Core是不夠的,實際run會有error,所以一定要安裝第一個,那才是完整的。
安裝完之後會長這樣
接下來只要把剛才的Moira.dll放到正確的位置,就可以在Reference裡引用了
可以在Object Browser裡看到一堆從java過來的函式庫,有正確顯示在這裡的,應該都能正常呼叫使用囉
然後csharp.moira是我從原本的Moira裡面改出來專門給C#用的界面
以上