我试图从作为桌面应用程序运行的单独jar中访问jar文件中的XML文件。我可以获得所需文件的URL,但是当我将其作为字符串传递给FileReader时,会得到一个FileNotFoundException,提示“文件名、目录名或卷标语法不正确”。
作为参考,我可以毫不费力地从同一个jar中读取图像资源,并将URL传递给ImageIcon构造函数。这似乎表明我用来获取URL的方法是正确的。
URL url = getClass().getResource("/xxx/xxx/xxx/services.xml");
ServicesLoader jsl = new ServicesLoader( url.toString() );在我的ServicesLoader类中
XMLReader xr = XMLReaderFactory.createXMLReader();
xr.setContentHandler( this );
xr.setErrorHandler( this );
xr.parse( new InputSource( new FileReader( filename )));使用这种技术读取XML文件有什么问题吗?
发布于 2009-02-11 20:38:25
问题是我在调用XMLReader的解析方法上走得太远了。parse方法接受InputSource,因此甚至没有理由使用FileReader。将上面代码的最后一行改为
xr.parse( new InputSource( filename ));工作得很好。
发布于 2008-12-31 15:52:54
看起来您想要使用java.lang.Class.getResourceAsStream(String),请参见
https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getResourceAsStream-java.lang.String-
发布于 2008-12-31 15:51:40
你没有说这是一个桌面应用程序还是web应用程序。如果是桌面应用程序,我会从适当的ClassLoader使用getResourceAsStream()方法;如果是web应用程序,我会使用上下文方法。
https://stackoverflow.com/questions/403256
复制相似问题