1

話しているサーバーのバージョンに基づいて、クライアント API を表す JAR ファイルのさまざまなバージョンをロードできるようにしたいと考えています。残念ながら、サーバーのバージョンごとに異なるクライアント API が必要です。指定された CLASSPATH に基づいてクラス ファイルを検索する ClassLoader を作成する方法はありますか? つまり、クラス ファイルを検索する場所の順序を ClassLoader に伝えたいのです。

4

1 に答える 1

0

私が正しく理解していれば、いくつかの構成に基づいてさまざまな場所を検索するカスタムClassLoaderが必要です。たとえば、ある場合には/ fooを調べ、別の場合は/ barを調べ、さらに別の場合は最初に/ fooを調べ、次に/barを調べます。それが正しければ、実際にはそれほど難しいことではありません。URLClassLoader(http://docs.oracle.com/javase/7/docs/api/java/net/URLClassLoader.html)を確認してください。ClassLoaderに、どのURL(ローカルディレクトリまたはファイルの場合もあります)と「指定された親クラスローダーで最初に検索した後、クラスとリソースに対して指定された順序でURLが検索される」を指定できます。

重要なのは、親のClassLoaderが検索したくないパスを認識できないため、JVMに処理させるのではなく、クラスパスの構成の一部を手動で行う必要があるということです。

于 2013-03-13T20:05:09.107 に答える