JSONParser getResourceAsStream

时间:2010-06-28 14:01:58

标签: java nullpointerexception

我在一个项目中工作,我需要一个资源。我试图使用此代码获取它:

  

InputStream =   JSONParser.class.getResourceAsStream( “a.json”);
            String jsonTxt = IOUtils.toString(is);

文件a.json位于项目的主文件中。

确切的问题是:

线程“main”中的异常java.lang.NullPointerException
    在java.io.Reader。(Reader.java:61)
    在java.io.InputStreamReader。(InputStreamReader.java:55)
    在org.apache.commons.io.IOUtils.copy(IOUtils.java:1049)
    在org.apache.commons.io.IOUtils.toString(IOUtils.java:359)
    在com.playence.parser.JSon.main(JSon.java:28)

调试,我看到变量'is'是null,我猜这就是为什么NullPointException,bugt我不知道如何解决它。

任何帮助?

提前吃完。

2 个答案:

答案 0 :(得分:2)

您有异常,因为Class.getResourceAsStream()无法找到a.json,在这种情况下,它会返回null而不是流。

您的a.json文件应该与JSONParser类位于同一个程序包中。这是你的一个类还是来自外部库的工具?

如果是库,也许您可​​以从与a.json位于同一个包中的类检索流,然后将其作为参数传递:

InputStream is = YourClassBesidesTheFile.class.getResourceAsStream("a.json");
String jsonTxt = IOUtils.toString( is );

或者可以使用文件的完整路径,例如"/some/package/etc/etc/a.json"

InputStream is = JSONParser.class.getResourceAsStream("/some/package/etc/etc/a.json");
String jsonTxt = IOUtils.toString( is );

要解决此问题,必须通过Class.getResourceAsStream()方法找到您的文件,尽管实际问题实际上是将文件内容检索为流,无论您如何操作。

答案 1 :(得分:1)

最后我找到了问题并解决了。
它与我的Eclipse配置有关:

项目 - 属性 - 来源

我在Myproject / src / main / resources中有排除**。

因此该目录中的文件不在类中。我只是把Exclude(无)解决了。

现在一切都好。 不管怎样,谢谢你!