【问题标题】:Reading resource from imported jar in Android从Android中导入的jar中读取资源
【发布时间】:2017-06-03 07:21:21
【问题描述】:

我正在使用为 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 中那样。

【问题讨论】:

    标签: java android eclipse


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的解释,我错过了这个,它解决了。
    猜你喜欢
    • 2022-01-20
    • 2021-11-21
    相关资源
    最近更新 更多