jar中找不到文件exception
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.(ABC.java:47)
我该如何解决?
如果需要在JAR中读取文件内容,则不能直接使用File类。 使用ClassLoader加载它:
//例如,阅读默认包中的SeleniumConfiguration.xml
InputStream input = SeleniumConfiguration.class.getResourceAsStream("/SeleniumConfiguration.xml");
NullPointerException清楚地表明找不到该文件。
InputStream input = ABC.class.getResourceAsStream(“/ Element.xml”);
你的XML文件在哪里? 如果将它放在与ABC.class相同的包(jar文件中的目录)中,那么它应该是没有前导斜杠的Element.xml
。
通常您可以按照建议使用InputStream,但是如果您想对文件执行进一步的非java操作,例如使用外部应用程序等对其进行解密,您可以使用FileOutputStream将此流写入文件,然后将其路径用作正确的文件路径。 简单来说,您可以将此文件解压缩到您的文件系统。
你把xml文件放在jar文件的根目录下了吗? 如果使用类似“/Element.xml”的路径,则jar文件结构应如下所示:
JAR文件
- COM
- META-INF
- Element.xml