在Android中从导入的jar中读取资源

时间:2017-06-03 07:21:22

标签: java android eclipse

我正在使用为Android中的桌面应用程序创建的jar。

这个jar包含一些配置文件并通过

读取它们
(code from .jar)

InputStream fXmlFile = Object.class.getResourceAsStream("/aaa/config/interface_config.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory
                    .newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);

上述代码在桌面应用程序中运行良好,但在Android上使用时,导入的库提供以下内容:

06-02 05:36:44.748: W/System.err(12001): java.lang.IllegalArgumentException: InputStream cannot be null
06-02 05:36:44.748: W/System.err(12001):    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:103)

表明Object.class.getResourceAsStream("/aaa/config/interface_config.xml") 正在返回null

我查看了生成的apk内部,/aaa/config/interface_config.xml存在。

我的问题是,Object.class.getResourceAsStream会在Android中按预期工作吗?我期待的是getResourceAsStream("absolutePath")返回apk中"absolutePath"内的资源,就像它通常在jar中一样。

1 个答案:

答案 0 :(得分:1)

您正在使用用于加载Object的类加载器,该加载器可能与加载您的类的类加载器不同。

如果资源来自加载类的包含此代码的jar,请将该行更改为:

InputStream fXmlFile = getClass().getResourceAsStream("/aaa/config/interface_config.xml");