私のプロジェクトのディレクトリ構造(Eclipse):
MyProject/
src/ --> "source directory" on Eclipse's classpath/buildpath
com.me.myapp
Driver
myconfig.txt
Driver
には、次のコードがあります。
public class Driver {
public static void main(String[] args) {
InputStream is = ClassLoader.getSystemClassLoader.getResourceAsStream("myconfig.txt");
if(is == null)
System.out.println("input stream is null");
else
System.out.println("input stream is NOT null :-)");
}
}
これを実行すると、次のコンソール出力が得られます。
input stream is null
なぜ?私はmyconfig.txt
間違った場所に? ClassLoader APIを誤って使用していますか?他に何か?前もって感謝します!
同じパッケージ内にある場合
_InputStream is = Driver.class.getResourceAsStream("myconfig.txt");
_
あなたがそれを持っている方法
_InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("myconfig.txt");
_
クラスパスのルートでファイルを探しています。使用できます
_InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("com/me/myapp/myconfig.txt");
_
検索のルールについては、 javadoc of ClassLoader#getResource(String)
および javadoc of Class#getResource(String)
で説明されています。
Mavenを使用している場合は、[〜#〜] build [〜#〜]タグの下に次の行を追加します。サーバーでwebappを実行しているときにこのエラーが発生しますが、サーバー上のリソースへの参照がありません。
したがって、これをPOM.xmlに追加して、魔法を見てください。
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>fileName.txt</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>fileName.wsdl</include>
</includes>
</resource>
</resources>
楽しむ。!!!