java相对路径

时间:2012-02-27 14:26:07

标签: java relative-path

使用下面的代码片段会抛出一个空指针异常,但我找不到原因:

String path = ResourcesLoader.class.getResource("src/i3d/resourcesloader/libraries/lib.txt").toString();

enter image description here

我使用getResources错了吗?我甚至尝试进入完整路径,如“D:\ Workspace ...”,双反斜杠,双向前滑动但我得到空指针的异常。我没有尝试过的唯一一件事是使用java的路径分隔符,但这在Windows上运行时不应该是一个问题。我错过了什么?

谢谢!

3 个答案:

答案 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();