所以我有这个:
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)
答案 0 :(得分:0)
似乎代码无法在您的情况下获得InputStream
,并且以下行可能会导致它:
ClassLoader.getSystemResourceAsStream("/XML64_Decoded/res/sample.xml")
它返回InputStream
的实例,我遇到了同样的问题。在我们继续之前,我们需要弄清楚xml文件的位置。如果它与具有此代码的类在同一个包中,或者在某个其他包中。例如,我在类SAXParserDemo
中使用此代码,我有两个xml文件:employee.xml
和employeeInPckg.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中进行了解释。