我在一个项目中工作,我需要一个资源。我试图使用此代码获取它:
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我不知道如何解决它。
任何帮助?
提前吃完。答案 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(无)解决了。
现在一切都好。 不管怎样,谢谢你!