我正在尝试读取将在jar包中的文件(blip3.out)。我使用getResourceAsStream来获取url,然后尝试从中读取。我使用其他帖子的解决方案进行了多次尝试,但我仍然得到 ExceptionInInitializerError 。有人可以解释一下我做错了什么或问题可能是什么。
另外,根据我的理解,如果我可以获得get资源流,那么它应该将blip3.out文件包含在jar包中。这是对的吗?
代码:
public Set<String> readWindowTitleSet() {
try {
InputStream is = this.getClass().getResourceAsStream("blip3.out");
ObjectInputStream ois = new ObjectInputStream(is);
anotherList = (HashSet<String>) ois.readObject();
ois.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return anotherList;
}
错误:
Exception in thread "main" java.lang.ExceptionInInitializerError
at view.MainGui.<init>(MainGui.java:29)
at view.MainGui.main(MainGui.java:38)
Caused by: java.lang.NullPointerException
at java.io.ObjectInputStream$PeekInputStream.read(Unknown Source)
at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(Unknown Source)
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at model.WindowTitleDataStore.readWindowTitleSet(WindowTitleDataStore.java:47)
at model.WindowTitleDataStore.<init>(WindowTitleDataStore.java:18)
at controller.InterruptionDecision.<clinit>(InterruptionDecision.java:23)
... 2 more
答案 0 :(得分:2)
错误的原因很简单:您实际上将null
作为输入流传递(查看PeekInputStream#read
的来源显示没有其他原因)。添加空检查并将文件移动到正确的位置,因为应用程序无法在运行时找到它。
(猜测不知道:将它放在您的sources目录的“view”文件夹中)