jar中找不到文件异常

时间:2011-01-21 05:49:58

标签: java

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)

我该如何解决?

4 个答案:

答案 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文件结构应该类似于:

罐文件

  • com
  • META-INF
  • Element.xml