ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

JDBCドライバーの動的ロード

2009-04-13 23:29:51 | PG(Java)

JavaDBを使うアプリをいざjarファイル化して実行しようとしたら、エラー(爆)

Eclipseで作って実行していたので、JavaDBのライブラリーであるderby.jarとかは常にクラスパスに入っていたので問題なかったのだが。
独立したアプリケーションにする場合、Windowsではjarファイルそのもの(プロパティー)にクラスパス等のオプションを指定できないので、クラスパスをどうにかしたかったらバッチファイルを作るしか無いのかな。

まぁそれくらいはどうってことないのですぐ作れたけど、バッチファイルをダブルクリックすると、一旦コンソールが起動するのがちょっとヤダ。
どうせなら実行可能jarファイル形式にして、jarファイルをダブルクリックしたら起動するようにしたいよなー。
jarファイルのマニフェストの中に依存するライブラリーを指定できるけど、これは相対パス(で、しかもパスにスペースが入っていたらダメっぽい)なので、derby.jarとかは指定しづらい。(アプリと同じ場所に一回コピーすれば済む話ではあるけど、そういう手間はなるべくかけたくない)

ここでふと思い出す。
Javaで作られたDBアクセスのツールって、jarファイル(とクラス名)を指定したら、そのままアクセス出来てるよな…。何らかの方法はあるはず。(裏でクラスパスを指定してJavaVMを別途起動している可能性も無くはないけど^^;)

という訳で、DriverManagerについて調べてみた。
JDBC3.0のClass.forName()の意味やJDBC4.0の追加機能がよく分かった。
でも自分でロードしたクラスが登録できないのはちょっとショック。セキュリティー上、しょうがないのかもしれないけど。
まぁ、リフレクションを使うイマイチな方法を経て、最終的には納得いく方法を見つけたけど…これでいいのかな?

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする