環境
JDK 17を使っています。たぶん、多少バージョンが違っていても同じように動くと思います。
今回のフォルダ構造
今回はsrc/main/resources配下のファイルを取得したいとします。
$ tree .
.
└── src
└── main
├── java
│ └── foo
│ └── Main.java
└── resources
├── sample1.txt
└── bar
└── baz
└── sample2.txt
コード
Main.java
package foo;
import java.nio.file.Path;
public class Main {
public static void main(String[] args) {
Path path1 = Path.of(Main.class.getClassLoader().getResource("sample1.txt").toURI());
Path path2 = Path.of(Main.class.getClassLoader().getResource("bar/baz/sample2.txt").toURI());
}
}
指定したファイルが存在しなかった場合は getResource() が null を返すので、NullPointerExceptionが発生します。
それを防ぎたい場合は、 getResource() の戻り値をいったん変数に代入して、if文で null チェックしてから toURI() するなどの対策が必要です。