使用下面的代码片段会抛出一个空指针异常,但我找不到原因:
String path = ResourcesLoader.class.getResource("src/i3d/resourcesloader/libraries/lib.txt").toString();
我使用getResources
错了吗?我甚至尝试进入完整路径,如“D:\ Workspace ...”,双反斜杠,双向前滑动但我得到空指针的异常。我没有尝试过的唯一一件事是使用java的路径分隔符,但这在Windows上运行时不应该是一个问题。我错过了什么?
谢谢!
答案 0 :(得分:3)
getResource
searches via the classloader,在类路径中通常简化。 src
文件夹不在类路径中 - 它仅用于构建。根据您的构建系统(ANT,Maven,IDE内部),资源文件夹可能会合并到类路径中。您将资源直接放入源文件夹中也是可行的(如果构建过程将所有非Java资源复制到类输出文件夹,或者源文件夹用于生成的类的输出)。
/
是您的资源的根。它等同于 src
文件夹中的根。 /i3d/resourcesloader/libraries/lib.txt
将是访问资源的正确方法。
将构建工具合并的单独文件夹中的资源分开会更好(例如,在Maven中:/src/main/java
,/src/main/resources
)。
答案 1 :(得分:1)
您似乎正在使用NetBeans?
只需创建一个名为src\resources
的文件夹,将文件放入其中,然后拨打this.getClass().getResource("lib.txt");
。
Netbeans将在构建时正确打包,资源将位于jar内的主文件夹中,因此您无需指定其文件夹即可获得。
答案 2 :(得分:1)
您应该只提供类加载点的相对路径(即没有src
):
String path = ResourcesLoader.class.getResource("/i3d/resourcesloader/libraries/lib.txt").toString();