Java クラスローダーが実際にクラスをロードする場所をプログラムで調べる方法を知っている人はいますか?
私は、クラスパスが非常に長くなり、手動での検索が現実的ではない大規模なプロジェクトによく携わっています。最近、クラスパス上の 2 つの異なる場所にあるために、クラスローダーがクラスの誤ったバージョンをロードするという問題が発生しました。
では、実際のクラス ファイルがディスク上のどこから来ているのかをクラスローダーに知らせるにはどうすればよいでしょうか?
編集:バージョンの不一致 (または他の何か) が原因でクラスローダーが実際にクラスのロードに失敗した場合はどうなるでしょうか。クラスローダーが読み取ろうとしているファイルを読み込む前に、そのファイルを見つける方法はありますか?
ベストアンサー1
次に例を示します。
package foo;
public class Test
{
public static void main(String[] args)
{
ClassLoader loader = Test.class.getClassLoader();
System.out.println(loader.getResource("foo/Test.class"));
}
}
次のように印刷されます:
file:/C:/Users/Jon/Test/foo/Test.class