public class ABC {
public ABC() {
File file = new File("xyz.xml");
但是当我按照以下方式运行我的jar时:
java -jar filename.jar arguments....
然后显示错误:
java.lang.IllegalArgumentException: InputStream cannot be null
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:120)
at com.ensarm.niidle.web.proxy.ABC.<init>(ABC.java:47)
我该如何解决?
答案 0 :(得分:11)
如果需要读取JAR中的文件内容,则不能直接使用File类。 使用ClassLoader加载它:
//例如,阅读默认包
中的SeleniumConfiguration.xml
InputStream input = SeleniumConfiguration.class.getResourceAsStream("/SeleniumConfiguration.xml");
答案 1 :(得分:4)
NullPointerException清楚地表明找不到该文件。
InputStream input = ABC.class.getResourceAsStream(“/ Element.xml”);
您的XML文件在哪里?如果将它放在与ABC.class相同的包(jar文件中的目录)中,那么它应该是Element.xml
而没有前导斜杠。
答案 2 :(得分:1)
通常你可以按照建议使用InputStream,但是如果你想对文件做进一步的非java操作,例如使用外部应用程序等解密它,你可以使用FileOutputStream将这个流写入文件然后使用它的路径作为正确的文件路径。简单来说,您可以将此文件解压缩到您的文件系统。
答案 3 :(得分:0)
您是否将xml文件放在jar文件的根目录下?如果使用类似“/Element.xml”的路径,则jar文件结构应该类似于:
罐文件