2012-01-12 8 views
0

どのバージョンのサーバーもサポートできるクライアントを開発する必要があります。新しいサーバーがクライアントを使用して接続されるたびに、適切なサーバー情報がクライアントに保管され、クラスpat hは現在のサーバー固有のクラスパスの場所に設定する必要があります。サーバーのバージョンに基づいてクラスのパスを設定する必要があります。私はこのクラスパスを動的に設定することに直面しています。私は常にClassNotFound例外を取得します。私はこれをどのように達成するのかお勧めしますか?動的にクラスパスを設定する

+1

さらに詳しい情報があります。この新しいサーバーは別のマシンにありますか?これはデプロイメントの問題のようです。展開には何を使用しますか? – fge

+0

RMIが行うこと(ネットワーク経由でソフトウェアのバージョンを更新する)、またはJava WebStartを実行しようとしていますか? –

答えて

0

実行時にクラスパスを動的に設定することはできません。ここでは2つのことを行うことができます:OSGiをよく知っているか、独自のクラスローダーを書く。 この特定の例では、writwing独自のクラスローダーが簡単になります。サーバー固有のクラスパスでは何を保持しますか?クラス、リソース、何?いくつかの詳細が役に立ちます。

+0

サーバ固有のクラスパスでは、jarファイルにはその特定のバージョンのサーバに固有のプロパティファイルがあります。 – user1145302

+0

実行時にjarsからclasessをロードする必要がありますか?試してみてくださいhttp://stackoverflow.com/questions/60764/how-should-i-load-jars-dynamically-at-runtime –

0

私は正確に何を達成しようとしているのか分かりませんが、クライアントマシンに必要なすべてのライブラリがあり、サーバーから受信した特定のパラメータに基づいて実行時にクラスパスを変更しようとしている私はClassWorldsに行きます。

ClassWorldsの設定ファイルを使用してクラスレルムのセットを定義しようとしましたが、クライアントのメインクラスはusing the ClassWorld argument in the main methodに実装されます。次に、サーバーから受け取ったパラメーターは、それらのレルムのいずれかの名前になります。したがって、realmパラメータを読んだ直後に、特定のレルムに対してClassWorldsによって作成されたものにswitch the current thread's classloaderを加えるだけで済みます。

関連する問題