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