1. ホーム
  2. ジャワ

javaのgetResourceメソッドについて

2022-02-26 19:28:29
<パス

まず、クラスパスとは、コンパイルされたクラスファイルやxml、プロパティなどの設定ファイルが置かれているディレクトリのことである。例えば、mavenプロジェクトであれば、クラスパスは "プロジェクト名/target/classes"、通常のプロジェクトであれば、"プロジェクト名/bin"、または"プロジェクト名/build/classes"プロジェクト名/ビルド/classes" などのようになります。

getResourceはjava.lang.Classのメソッドであり、バイトコードオブジェクトから呼び出されます。
getResource は文字列の引数を取り、それが "/" で始まる場合はクラスパスのルートを探し(サブディレクトリを再帰的に探すことはありません)、それが "/" で始まらない場合は getResource を呼び出したバイトコード・オブジェクトがあるディレクトリを探します(これも再帰的にサブディレクトリを探すことはありません)。

例として

@Test
    public void test() {
        System.out.println(Test1.class.getResource(""));
        System.out.println(Test1.class.getResource("/"));
        System.out.println(Test1.class.getResource("Test1.class"));
        System.out.println(Test1.class.getResource("/Test1.class"));
    }

最初の文では、Test1はcom.trs.javaseの下にあるので、"xxx.com.trs.javase"と出力し、Test2.classから呼ばれると、 "xxx.com.trs.javase. subpackage" と出力されます。

2文目はクラスパスのルートが出力されます。

3番目の文は、Test1.classがあるディレクトリを出力します。

4番目の文では、Test1.classはクラスパスのルートディレクトリにないので、nullを出力します。

結果を出力します。

file:/D:/eclipse-workspace/javase/bin/com/trs/javase/
file:/D:/eclipse-workspace/javase/bin/
file:/D:/eclipse-workspace/javase/bin/com/trs/javase/Test1.class
null