0

我在我的 java 游戏中加载 XML 文件时遇到问题。这是文件所在的位置(来自 Eclipse):

Eclipse IDE 中的包资源管理器

我一直在做研究,显然要在 JAR 文件中使用 xml 文件,我需要调用

DocumentBuilder.parse(InputStream)

问题是当我尝试使用它获取 InputStream 时,getResourceAsStream("res/xml/items.xml") 它总是返回 null。

我怎样才能让它不返回null?我不想将我的 res 文件夹放在我的“src”文件夹中,但是在 Eclipse 中是否有一些我需要设置的设置?路径的正确字符串是什么?谢谢!

编辑:

我的代码:

try {
    DocumentBuilder db = dbf.newDocumentBuilder();
    InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("res/xml/items.xml");
    dom = db.parse(is);
} catch(Exception e) {
    e.printStackTrace();
}

这仍然给我null。

在此处输入图像描述

4

1 回答 1

4

因此,假设您告诉 Eclipse 使用“res”作为源文件夹,您的查找仍然有两个问题:

Item.class.getResourceAsStream("res/xml/items.xml");

这是一个相对路径,因此getResourceAsStream()将在其所在目录前面添加Item.class(请参阅docs)。

第二个问题是 Eclipse 将“源”文件夹视为类路径的根。因此,您需要更改路径以排除“res”。

一种选择是使用绝对路径:"/xml/items.xml"

更好的选择是调用Thread.currentThread().getContextClassLoader().getResourceAsStream(),它可以在应用服务器和自包含应用程序中正常工作(并且是一个好习惯)。但是您仍然需要从路径中省略“res”。

于 2013-03-20T21:54:24.010 回答