2022/09/11

IKVM (revived) の使い方

前回の記事でIKVMが復活しているというのを書いたけれど、その続き。
具体的な使い方について。

Visual Studio 2022のNuGetから「IKVM」で検索して
簡単にインストールできるまでは良いのだけれど、
そのあと、どうやって .jar (Javaのコンパイル済みファイル)を
.net用のdllに変換するのか、というあたり。

ikvm-revived のGitHubのリポジトリにある
README.md の「Usage」(使い方)にざっくり書いてあるのだけれど
いまいちわかりにくいので簡単に。

NuGetからIKVM(バージョン8.2.0以降、「最新の安定版」と表示されているあたりを選択するのが無難)をインストールしたあと、
VSのソリューションエクスプローラーで
プロジェクトファイルを右クリック > 「プロジェクトファイルの編集」を選択。


XML形式でプロジェクトの設定が記述されたファイルが開くので、
前述のGitHubにあるREADME.mdの「Example」に書いてあるように、

<ItemGroup>
  <IkvmReference Include="変換したいjarファイルのパス" />
</ItemGroup>

と追加する。
だいたいこんな感じになる。

(上の画像は、Apatche Tikaからダウンロードしてきたjarファイル。)

jarファイルの置き場所は多分どこでもいいけど、
プロジェクトのフォルダ内に置いとくのが無難かも。
パスは絶対パスか、もしくはプロジェクトファイル(*.csproj)からの相対パス。

この状態でビルドすると、
出力ディレクトリに、jarから変換されたDLLが生成されるはず。

(Tikaはサイズが58MBもあるので変換に少々時間がかかった・・・)


・・・というような感じで、
.jarファイルから.net用のDLLを生成できる。

上記の変換だけを行うプロジェクトを作っておいて、
そこで変換したDLLを、
実際に使いたいプロジェクトのほうにコピーして使うのがいいのかもしれない。
(そっちにもNuGetでIKVMをインストールする必要があるので忘れずに。)

2022/08/29

復活のIKVM

以前、JavaのライブラリをC#から利用可能にしてくれる
IKVM というのについて書いたけれど

C# (.NET)でMS Officeファイルを扱う - Apache POI & IKVM
https://glsharp.blogspot.com/2020/05/c-netms-office-apache-poi-ikvm.html

ちょっと用があって、
久しぶりにまたVSのNuGetからIKVMを取得しようとしたら・・・

おや、なんか見覚えのないバージョン?
しかも公開日が7月、プロジェクトURLが「ikvm-revived」・・・
もしかして復活した・・・?

ということで、
NuGetに掲載されているプロジェクトURLに行ってみると、
https://github.com/ikvm-revived/ikvm
ほんとに復活してるらしい。
現在開発が進行中で頻繁に更新されているっぽい。

プロジェクトのReadMeに
使い方が書いてあるっぽいのだけど
いまいちよくわからないので調査中。

一点だけ要注意。
Visual Studio 2019だと、
NuGetからのインストールに失敗する・・・どころか、
プロジェクトファイル(.csproj)自体が壊れるっぽい。

2022のほうだと大丈夫のようだ。
必ずVisual Studio 2022を使うこと。