![](/img/trans.png)
[英]ClassLoader.getSystemClassLoader().getResourceAsStream returns null after cloning Project
[英]ClassLoader getResourceAsStream returns null
我的項目目錄結構(在 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");
搜索規則在ClassLoader#getResource(String)
的javadoc 和Class#getResource(String)
的javadoc 中有解釋。
如果您正在使用 Maven,請在BUILD標記下添加以下行。 當您在服務器上運行 web 應用程序但沒有引用服務器上的資源時,您會收到此錯誤。
因此,將以下內容添加到您的 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>
玩得開心.!!!
而不是-
InputStream is = ClassLoader.getSystemClassLoader.getResourceAsStream("myconfig.txt");
使用-
InputStream is = ClassLoader.getSystemClassLoader.getResourceAsStream("com/me/myapp/myconfig.txt");
注意:打包前無需提供源文件夾名稱( src )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.