Abstract Bits : Dynamic Classpaths

http://abstractbits.blogspot.com/2009/08/dynamic-classpaths.html

バッチプログラムみたいな,JavaSEのプログラムを起動させるためにシェル組んでクラスパス設定するのメンドイでしょ,だからJavaプログラム内でダイナミックにクラスパス設定したみたよってな話。


ProtectionDomainCodeSourceって相当昔からあったAPIなのに,今まで知らんかった。


それはさておき。本来protectedなURLClassLoader#addURL()を使ってシステムクラスローダにゴリっとクラスパスを追加するのは,ちょっと気が引けるわな。
あと,追加ライブラリのJarファイルをどこに格納させるかで,またやりようも変わってくる。例えば,本体をJarファイルにしていると先のCodeSourceから得られるURLってJarファイルそのものになる。さらに,そのJarファイル中にWARファイルみたく依存ライブラリを放り込んでおくと,動的にJarファイル探索するのも(java.io.Fileと比べて)ちょと面倒。


とかとか思うと,自前はやめてclassworldsあたりを頼った方がいいかな思う。
...そんな面倒しなくても依存ライブラリごといっぺんClassファイルにばらして,ひとつのJarファイルに再アーカイブしてしまえって話もあるわな。:-P