ClassLoader.getSystemResourceAsStream给出null异常

时间:2014-07-17 18:12:21

标签: java android

所以我有这个:

parser.parse(ClassLoader.getSystemResourceAsStream("/XML64_Decoded/res/sample.xml"), handler);

我收到此错误:

Exception in thread "main" java.lang.IllegalArgumentException: InputStream cannot be null
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at vms.main(vms.java:26)

1 个答案:

答案 0 :(得分:0)

似乎代码无法在您的情况下获得InputStream,并且以下行可能会导致它:

ClassLoader.getSystemResourceAsStream("/XML64_Decoded/res/sample.xml")

它返回InputStream的实例,我遇到了同样的问题。在我们继续之前,我们需要弄清楚xml文件的位置。如果它与具有此代码的类在同一个包中,或者在某个其他包中。例如,我在类SAXParserDemo中使用此代码,我有两个xml文件:employee.xmlemployeeInPckg.xml。第一个文件位于我的班级SAXParserDemo旁边,即在同一个包中,因此我可以使用以下内容获取InputStream

InputStream is1 = SAXParserDemo.class.getResourceAsStream("employee.xml");

另一个文件employeeInPckg.xml位于src/files/employee/xml/employeeInPckg.xml位置,我可以InputStream为:

InputStream is2 = lassLoader.getSystemClassLoader().getSystemResourceAsStream("files/employee/xml/employeeInPckg.xml");

搜索规则在ClassLoader#getResource(String)的javadoc和Class#getResource(String)的javadoc中进行了解释。