「res」と呼ばれるリソースフォルダ内の* .txtファイルを読み込み、さまざまな種類のJSONのサブフォルダを含むSwing Javaプログラムがあります。 Eclipseから直接実行すると、すべて正常です。実行可能なjarファイルを作成しても動作しません。私は、恐ろしい解決策で動作させることができました。 実行可能なjarのメインパッケージにないテキストファイルを読み込みます
は、私はこのコード行を使用してそれらを読むには:ファイルが文字列をあるInputStream is = this.getClass().getResourceAsStream(file + ".txt");
。私はこれが特定のファイルをjarファイルで検索すると思ったが、明らかにそうではないと思った。私はres/subfolder/name_of_file.txtとサブフォルダ/ name_of_file.txtというファイルにパスを入れようとしましたが、役に立たなかった。 はここに私のプロジェクトcom.packageから
Project
src
com.package
res
JSON_type1
JSON_type2
file.txt
の構造であり、私はJSON_type2/file.txtをから読み取る必要がありますクラスを持っています。私のテキストファイルをサブフォルダ内に整理しておく明白な理由に加えて、私のGUIはそれらのサブフォルダの内容でドロップダウンリストを入力するということです。
私がここで他の質問から集めたものから、テキストファイルを呼び出すパッケージにテキストファイルを保存したい場合、getResourceAsStream()は私の解決策でした。それ以外には、ClassLoaderのサブクラス化とfindResource()の上書きについて何かを発見しました。可能であれば、私はこのクラスとその機能に精通していないので、このソリューションを避けたいと思います。
詳細が必要な場合はお知らせください。
はあなたに
PSありがとう:この質問はあなたがgetResourceAsStream("/res/JSON_type2/file.txt")
べきfile.txtなどのために、たとえば、スラッシュでそれらを分割することによって、パッケージ内のファイルを扱うことができ、私の前の質問here
おそらく私の問題はどこかにあるのかもしれません。このパスを使用するとエラーになりますが、src/com.packageにテキストファイルを置き、 'this.getClass()。getResourceAsStream(" file.txt ");を使用すると動作します。私が別のエラーを探すかもしれない考え? – Chamane
それはまだ動作します。しかし、テキストファイルをres/JSON_type2というフォルダに入れて、パッケージcom.packageに入れないようにします。 – Chamane
'file.txt'がJarファイルのどこにあるのかを調べて、Jarが実行中であることを確認しますアプリの-timeクラスパス。これは、コマンドラインからJarの内容をリストしたり、Zipやアーカイブツールを使ってJarの内容を調べることができれば便利です。 –