java - 解析 Jar 中的 XML 文件

标签 java xml resources null slick2d

我在 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

最佳答案

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

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

这是一个相对路径,所以 getResourceAsStream()将在目录前面添加 Item.class生命(参见 docs )。

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

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

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

关于java - 解析 Jar 中的 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15535153/

相关文章:

java - XSL :FO inline and pretty print

python - 我如何在 odoo 的 xml 中获取当前日期?

android - 您可以将子文件夹添加到 Eclipse Android 项目中的布局吗?

c# - 避免 .NET (C#) 项目中的重复图标资源

java - Spring 构造型似乎不起作用(找不到 bean)

java - NetBeans 中的资源

java - 有没有其他方法可以在不使用下面代码中的 Join 的情况下启用多线程

java - 俄罗斯方 block AI - 理解广度优先搜索的问题

java - 使用单例成员/值参数配置原型(prototype) bean

delphi - 编译rc文件遇到 "expected exponent value"错误