我正在使用为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中一样。
答案 0 :(得分:1)
您正在使用用于加载Object
的类加载器,该加载器可能与加载您的类的类加载器不同。
如果资源来自加载类的包含此代码的jar,请将该行更改为:
InputStream fXmlFile = getClass().getResourceAsStream("/aaa/config/interface_config.xml");