首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从Java jar文件中读取资源文件?

如何从Java jar文件中读取资源文件?
EN

Stack Overflow用户
提问于 2008-12-31 15:46:20
回答 8查看 151.8K关注 0票数 63

我试图从作为桌面应用程序运行的单独jar中访问jar文件中的XML文件。我可以获得所需文件的URL,但是当我将其作为字符串传递给FileReader时,会得到一个FileNotFoundException,提示“文件名、目录名或卷标语法不正确”。

作为参考,我可以毫不费力地从同一个jar中读取图像资源,并将URL传递给ImageIcon构造函数。这似乎表明我用来获取URL的方法是正确的。

代码语言:javascript
运行
复制
URL url = getClass().getResource("/xxx/xxx/xxx/services.xml");
ServicesLoader jsl = new ServicesLoader( url.toString() );

在我的ServicesLoader类中

代码语言:javascript
运行
复制
XMLReader xr = XMLReaderFactory.createXMLReader();
xr.setContentHandler( this );
xr.setErrorHandler( this );
xr.parse( new InputSource( new FileReader( filename )));

使用这种技术读取XML文件有什么问题吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-02-11 20:38:25

问题是我在调用XMLReader的解析方法上走得太远了。parse方法接受InputSource,因此甚至没有理由使用FileReader。将上面代码的最后一行改为

代码语言:javascript
运行
复制
xr.parse( new InputSource( filename ));

工作得很好。

票数 4
EN

Stack Overflow用户

发布于 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-

票数 68
EN

Stack Overflow用户

发布于 2008-12-31 15:51:40

你没有说这是一个桌面应用程序还是web应用程序。如果是桌面应用程序,我会从适当的ClassLoader使用getResourceAsStream()方法;如果是web应用程序,我会使用上下文方法。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/403256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档