首页 文章

在Jar中解析XML文件

提问于
浏览
0

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

package explorer in the Eclipse IDE

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

DocumentBuilder.parse(InputStream)

问题是当我尝试使用 getResourceAsStream("res/xml/items.xml") 获取InputStream时,它总是返回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();
}

这仍然让我无效 .

enter image description here

1 回答

  • 4

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

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

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

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

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

    更好的选择是调用 Thread.currentThread().getContextClassLoader().getResourceAsStream() ,它可以在app-server和自包含的应用程序中正常工作(并且是一个很好的习惯) . 但是你仍然需要从你的路径中省略"res" .

相关问题