java - ExceptionInInitializerError - 使用getResourceAsStream读取jar包中的文件

标签 java jar java-io

我正在尝试读取 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

最佳答案

错误的原因很简单:您实际上将 null 作为输入流传递(查看 PeekInputStream#read 的来源表明没有其他原因) 。添加空检查并将文件移动到正确的位置,因为应用程序在运行时无法在那里找到它。

(猜测不知道:将其放在源目录中的“view”文件夹中)

关于java - ExceptionInInitializerError - 使用getResourceAsStream读取jar包中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14857701/

相关文章:

java - 在javafx中将节点对齐到Vbox的右侧

java - jar 中未找到主类异常

java - 如何按字母顺序 File.listFiles?

java - 从 java 文件运行 jar 文件

java - 如何删除java中windows使用/锁定的文件

java - 如何获取计算机上的所有媒体文件

java - 读取文件 java.io 时出错

java - Java中的Swing框架具有人脸识别和语音识别功能

java - 使用 JNI 将字符串数组从 java 传递到 C

java - Xtext:这个异常是什么意思?