Class#getResourceAsStream(String)
読み取り用の JavaDoc は次のとおりです。
指定された名前のリソースを検索します。特定のクラスに関連付けられたリソースを検索するためのルールは、クラスの定義クラス ローダーによって実装されます。このメソッドは、このオブジェクトのクラス ローダーに委譲します。
では、以下はどのように機能しますか。
class AppTest {
private static final Properties p = new Properties();
static {
try {
p.load(AppTest.class.getResourceAsStream(("config.properties")));
} catch (IOException e) {
e.printStackTrace();
}
}
...
}
config.properties が AppTest.class と同じディレクトリにある場合:
pro/wulfgar/net/on/users/app/{AppTest.class,config.properties}
AppTest.class のクラスローダーは、アプリケーションのクラスパス (.
この場合) でそれを探すべきではありませんか? したがって、config.properties はproディレクトリと同じレベルにある必要があります。
つまり、リソースを と定義しないと、pro/wulfgar/net/on/users/app/config.properties
なぜクラスローダーがリソースを見つけられるのか理解できません。