IAm*_*aja 29 java eclipse inputstream classpath classloader
我的项目目录结构(在Eclipse中):
MyProject/
src/ --> "source directory" on Eclipse's classpath/buildpath
com.me.myapp
Driver
myconfig.txt
Run Code Online (Sandbox Code Playgroud)
在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 :-)");
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到以下控制台输出:
input stream is null
Run Code Online (Sandbox Code Playgroud)
为什么?我是否放置myconfig.txt
在错误的位置?我是否错误地使用了ClassLoader API?别的什么?提前致谢!
Sot*_*lis 43
如果它在同一个包中使用
InputStream is = Driver.class.getResourceAsStream("myconfig.txt");
Run Code Online (Sandbox Code Playgroud)
你拥有它的方式
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("myconfig.txt");
Run Code Online (Sandbox Code Playgroud)
它正在类路径的根目录中查找文件.你可以用
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("com/me/myapp/myconfig.txt");
Run Code Online (Sandbox Code Playgroud)
搜索规则在javadocClassLoader#getResource(String)
和javadoc中解释Class#getResource(String)
.
小智 10
如果您正在使用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>
Run Code Online (Sandbox Code Playgroud)
玩得开心.!!!
归档时间: |
|
查看次数: |
59518 次 |
最近记录: |