[java][classpath]プログラム上からのクラスパスの設定というかクラスローダの設定
2006/07/18
2006/11/26
毎回、アプリケーションを作成する際の悩みは、設定ファイルをどうするかです。
フレームワークにまかせるほどでもない場合。。。
アプリケーション起動時の引数にクラスパスを設定したり、環境変数に用意したり、-Dオプションを使うとかいろいろあります。
設定ファイルや、画像ファイルの読み込みに、
Xxxxx.getClassLoader().getResource
をよく使用してます。しかしこれだと、クラスパスが設定されてないと読めません。
では、
でうまくいくのでしょうか。
この方法ではだめなようです。
クラスロードをセットしなおすのがよい方法のようです。
上記の方法を使用する場合は、
を使用するようにします。
オリジナルのクラスローダを使用して、アプリケーションで設定ファイルの位置を読み込むというのがいいかなぁとか思いました。
フレームワークにまかせるほどでもない場合。。。
アプリケーション起動時の引数にクラスパスを設定したり、環境変数に用意したり、-Dオプションを使うとかいろいろあります。
設定ファイルや、画像ファイルの読み込みに、
Xxxxx.getClassLoader().getResource
をよく使用してます。しかしこれだと、クラスパスが設定されてないと読めません。
では、
String classpath = System.getProperty("java.class.path")+File.pathSeparatorChar+"適当なパス";
System.setProperty("java.class.path", classpath);
でうまくいくのでしょうか。
この方法ではだめなようです。
クラスロードをセットしなおすのがよい方法のようです。
Thread.currentThread().setContextClassLoader(マイクラスローダー);
上記の方法を使用する場合は、
Thread.currentThread().getContextClassLoader().getResource(xxxx);
を使用するようにします。
オリジナルのクラスローダを使用して、アプリケーションで設定ファイルの位置を読み込むというのがいいかなぁとか思いました。
: