これは非常に一般的なエラーです。これに関するスレッドがたくさんあるためですが、私の状況がすべてのスレッドとわずかに異なるため、解決策が機能しないかどうかはわかりません。
基本的に、私は日食にいます。src という名前のソース フォルダーがあり、3 つのフォルダーにまたがるパッケージがあり、その次に問題のクラスがあります。クラスは次のコードを使用します。
BufferedImage im = ImageIO.read(Thread.currentThread().getContextClassLoader().getResourceAsStream(filenames[x].concat(extension)));
try/catch で囲まれています。filenames は、読み込んでいるすべてのファイル名の配列で (このコードは for ループで複数回実行されます)、拡張子は".PNG"
. 画像は、EngineTextures という別のソース フォルダーにあります。
このプログラムを実行すると、Eclipse で問題なく動作します。すべてのテクスチャが読み込まれ、他のすべてのコードが実行されます! ただし、実行可能なjarとしてエクスポートし、コマンドプロンプトで実行してinput == null
、それらすべてでエラーを受け取り、その中にある行を指しImageIO.read(Thread.currentThread()
ます。
キッカーは、このすべてが以前に別のプロジェクトで機能していたことです。そのプロジェクトを再エクスポートしようとしても、まったく変更されていないコードで同じエラーが発生します。これにより、あいまいな Eclipse 設定が誤って変更されたと思われます。
jar を開くと、私の MANIFEST.MF のバージョン1.0
とクラスパスは単純な.
ものでしたが、これはこの種のことに対して正しいと思いましたか? Main-Class は適切な場所を指しており、すべての写真は META-INF フォルダーのすぐ隣にあります。
私が失敗した解決策:
getResourceAsStream は Eclipse で機能しますが、ブラウザーでアプレットとして実行すると機能しません
getResourceAsStream() が IDE では機能するのに JAR では機能しないのはなぜですか?
Eclipse IDE で作成した jar 内のオーディオ ファイル
getResourceAsStream() は jar で null を返しますが、Eclipse では問題ありません
さらに、ワークスペースを完全に削除し、写真とコードを同じ状態に再コピーしました。
事前に、すべての助けに感謝します。このようなことを繰り返すのは嫌ですが、これまでのところ解決策はありません。重要な情報を提供していない場合はお知らせください。