この記事は約2分21秒で読むことができます。

jardumpをメンテして2-0-0版をアップした。

kotlin,swift,android,java,graalvmなどマルチプラットホーム対応が進んでいる。単一実行バイナリコマンドがjavaでもつくりやすくなってきた。最近はkotlinとswiftでシコシコしている。javaで機会学習とかあんまり聞かないけど、個人的には興味があるので、そういったjarライブラリの情報元は少ないだろうから、jarファイルからクロステーブル形式で出力するコマンドを以前作ってシコシコしようと考えていた。せっかくだから、jardumpもgraalvmでネイティブバイナリ形式でハンディなコマンドを作ろうと思ったが、どうもクラスローダ周りがgraalvm経由で作成されたバイナリだとうまく動かなくて、結局javaコマンドの引数に-jar XXX.jarみたいなオプションをつけて実行しなくてはいけなくなった。万能ではないが実行時にクラスパスを気にしなくて済むようなやり方はハンディだと思う。コンパイル時には外部ライブラリ依存な単一実行可能な形式のjarファイルをgradleないしはmavenで作成する必要がある。
jar file dump(jardump)  

書いていた発見としては、クラスロード時にその時点でのライブラリの依存関係が解消されていなくて、例外が起きたことと、実行時にローディングしたクラスファイルの依存関係が解消されていなくて、例外が起きたことの2つは別ものなのかななど。依存関係が解消されない場合は対象のjarファイル名とそのjarに包まれているクラス名をフルパス形式でマップに保持した。必要であったら、プロジェクトをインポートして、いろいろいじってみるような感じにした。

楽しみにしているのは失敗した依存関係のjarファイルを単一で引数に指定したときの出力結果と見比べたりすること。

いろいろ気づくこともあるような気がする。

個人的には、xmlやnet系のパッケージ名が絡んでくると泥試合になることを経験している。

割と結構便利だと思う。いろいろブラッシュアップしたつもり。💩

Leave a Reply

Your email address will not be published. Required fields are marked *