首页 >Java >java教程 >为什么 FileReader 无法从 Java JAR 读取 XML,以及如何修复它?

为什么 FileReader 无法从 Java JAR 读取 XML,以及如何修复它?

Susan Sarandon
Susan Sarandon原创
2024-12-09 08:53:06592浏览

Why Does FileReader Fail to Read XML from a Java JAR, and How Can I Fix It?

排查从 Java JAR 文件读取资源文件的错误

从 JAR 文件中访问资源时,开发人员经常会遇到困难。当尝试使用 FileReader 从 JAR 读取 XML 文件时,就会出现这样的问题,导致“FileNotFoundException”错误。

在这种特定情况下,开发人员正确检索 XML 文件的 URL,但遇到错误将其传递给 FileReader 时。这表明 URL 检索方法是有效的。然而,问题在于后续步骤:

XMLReader xr = XMLReaderFactory.createXMLReader();
xr.setContentHandler( this );
xr.setErrorHandler( this );
xr.parse( new InputSource( new FileReader( filename )));

FileReader 需要一个文件路径作为其参数,而 getClass().getResource() 获取的 URL 指向 JAR 中的资源。

解决方案

要解决此问题,请使用 java.lang.Class.getResourceAsStream(String) 方法,该方法返回一个可用于读取资源的InputStream:

URL url = getClass().getResource("/xxx/xxx/xxx/services.xml");
InputStream is = url.openStream();

然后可以使用InputStream来初始化XML解析器的InputSource:

xr.parse( new InputSource( is ));

通过使用getResourceAsStream,开发人员可以成功从 JAR 文件中读取 XML 资源,消除了“FileNotFoundException”错误。

以上是为什么 FileReader 无法从 Java JAR 读取 XML,以及如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn