0

jarパッケージに含まれるファイル(blip3.out)を読み取ろうとしています。getResourceAsStreamを使用してURLを取得し、そこから読み取ろうとしています。他の投稿からの解決策を使用して複数の試行を行いましたが、それでもExceptionInInitializerErrorが発生します。誰かが私が間違っていることや問題が何であるかを説明してもらえますか?

また、get resource streamを機能させることができるかどうかを理解していることから、jarパッケージにblip3.outファイルを含める必要があります。これは正しいです?

コード:

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
4

1 に答える 1

2

エラーの原因は単純です。実際にnullは入力ストリームとして渡します(ソースを見ると、PeekInputStream#read他に理由がないことがわかります)。nullチェックを追加し、ファイルを正しい場所に移動します。これは、アプリケーションが実行時にファイルを見つけることができないためです。

(わからないと推測する:ソースディレクトリの「view」フォルダに配置します)

于 2013-02-13T16:13:16.643 に答える