我遇到了getResourceAsStream方法的问题 - 由于目录错误,它返回null。问题是我不知道如何定义目录。
我的项目结构看起来像那样
Project
#src
#com.package
#ExampleClass.java
#dll
#MyFile.dll
当我有
时InputStream in = this.getClass().getResourceAsStream("../dll/" + "MyFile.dll");
返回null。有没有人知道如何处理这个问题以及如何定义路径?
答案 0 :(得分:3)
如果this
中的ExampleClass
为com.package
,则需要向上两级才能到达CLASSPATH的根目录:
this.getClass().getResourceAsStream("../../dll/" + "MyFile.dll");
假设/dll
目录直接放在CLASSPATH的根目录中。或者只是使用绝对路径:
this.getClass().getResourceAsStream("/dll/" + "MyFile.dll");
如果/dll/MyFile.dll
不在您的CLASSPATH上(只需打开您的JAR文件并检查它是否存在),您应该使用文件系统机制来打开它。
答案 1 :(得分:0)
这取决于类路径中MyFile.dll的位置,而不是您项目上的MyFile.dll的位置。请查看where to put a file to read from a class