2012-07-05 63 views
2

我遇到了getResourceAsStream方法的问题 - 由于目录错误,它返回null。问题是我不知道如何定义dir。为外部文件处理getResourceAsStream

我的项目结构看起来像

Project 
    #src 
    #com.package 
     #ExampleClass.java 
    #dll 
    #MyFile.dll 

当我有

InputStream in = this.getClass().getResourceAsStream("../dll/" + "MyFile.dll"); 

返回null。有没有人有一个想法如何处理这个问题,以及如何定义路径?

回答

3

如果thiscom.packageExampleClass,你需要去两个层次最多,达到了CLASSPATH的根:

this.getClass().getResourceAsStream("../../dll/" + "MyFile.dll"); 

假设/dll目录在CLASSPATH的根直接放置。或者干脆使用绝对路径:

this.getClass().getResourceAsStream("/dll/" + "MyFile.dll"); 

如果/dll/MyFile.dll不在YOUT CLASSPATH(只需打开您的JAR文件,并检查它是否存在),你应该使用的文件系统的机制来打开它。

+0

“../../dll/”这就是我所做的,但它没有帮助。如何在eclipse中配置CLASSPATH? – 2012-07-05 13:50:42

+0

@MisterS:我没有使用Eclipse,但查看:http://openscada.org/2010/05/31/adding-a-directory-as-class-path-to-eclipse/或Google“* eclipse classpath添加目录*“ – 2012-07-05 13:53:54

+1

打开项目属性,搜索java构建路径。添加源文件夹中的dll文件夹,并写出合适的输出文件夹路径。如果你输入dll作为输出文件夹,使用getResourceAsStream(“/ dll ......”) – Deniz 2012-07-05 13:57:31