長期実行JavaアプリケーションのjarファイルをロードするのにClass.getResource()
を使用しています。それはうまく動作します。しかし、アプリが長時間実行された後、それはnull
を返し始めます。長時間実行した後にClass.getResource()がnullを返す
このトラブルシューティングを行うにはどうすればよいですか?私が見ることができるのは、null
を返すgetResource()
によって引き起こされる例外です。私はなぜそれが返すのを見つけることができませんnull
。
私はClass.getResourceAsStream()
によって返された閉鎖されていないストリームを確認しましたが、私はそれを呼びません。 (私のライブラリの1つかもしれませんが...)私はFileInputStreamsがクローズされていないかチェックしましたが、何も見つかりませんでした。 (これが起こっている間、FileInputStreamsは引き続き使用可能です。)
編集:これはthis oneと同じ問題のようです。また、possibly related。
を私は
URL.openStream()
によって返されたInputStreamからMANIFEST.MFのうちバージョンを読んでいたコードを持っていました問題のクラスを逆コンパイルし、同じメソッドを呼び出して、結果をログに記録します。最初は、 'Class.getClassLoader0()'、 'Class.getClassLoader0()。getResource()'、 'Class.getClassLoader0()。getParent()。getResource()'、 'Class.getClassLoader0() '.getBootstrapResource()'と 'Class.getClassLoader0()。findResource()'(ほとんどはリフレクションによってのみアクセス可能です)。 – Siguza@Siguzaありがとう!私はそれを試み、数週間後に報告します。 – alexantd