有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java解析Jar中的XML文件

我在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) 个答案

  1. # 1 楼答案

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

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

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

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

    一个选项是使用绝对路径:"/xml/items.xml"

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