从 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中文网其他相关文章!