さまざまな種類の JSON のサブフォルダーを含む「res」というリソース フォルダー内の *.txt ファイルを読み取る Swing Java プログラムがあります。Eclipse から直接実行すると、すべて問題ありません。実行可能なjarを作成しても機能しません。私は、すべてのテキスト ファイルを、それらが呼び出されたパッケージに入れることで、恐ろしいソリューションで動作させることができました。
それらを読むには、次のコード行を使用します。
InputStream is = this.getClass().getResourceAsStream(file + ".txt");
file は文字列です。これは指定されたファイルをjarファイルで検索すると思いましたが、明らかにそうではありません。ファイルへのパス、 res/subfolder/name_of_file.txt および subfolder/name_of_file.txt を入力しようとしましたが、役に立ちませんでした。これが私のプロジェクトの構造です
Project
src
com.package
res
JSON_type1
JSON_type2
file.txt
com.package から、JSON_type2/file.txt から読み取る必要があるクラスがあります。テキスト ファイルをサブフォルダーに整理しておく明白な理由は、GUI がこれらのサブフォルダーの内容をドロップダウン リストに入力することです。
ここで他の質問から集めたものから、テキストファイルが呼び出されたパッケージにテキストファイルを保持したい場合、 getResourceAsStream() が私の解決策でした。それ以外に、ClassLoaderのサブクラス化とfindResource()の上書きについて何かを見つけました。私はそのクラスとその機能に慣れていないので、可能であればこの解決策を避けたいと思っています。
さらに情報が必要な場合は、お知らせください。
ありがとうございました
PS: この質問は、私の以前の質問hereから生じました