jar化した時にリソースの参照が出来ません。
1.EclipseでMavenプロジェクトを作成。(特にMavenに関係する事象では無いと思いますが)
2.src/main/resources配下にフォルダーを作成してテキストファイルを配置する。
3.リソースを読み込んでSystem.out.printlnする処理を作成。
このような状況で、Eclipseから実行すると正しくテキストファイルの中身が出力されるのですが、Eclipseでjarにエクスポートして実行すると、参照できず例外が発生します。
■ Eclipseで定義している内容とテスト実行してFile1.txtの中身が出力されている実行結果のイメージです。
■ Jar化したファイルの中身を確認してFile1.txtが含まれていることを確認したうえで実行するとNull参照例外が発生した時のイメージです。
ちなみに、"folder1/folder2/File1.txt"の部分を"resources/folder1/folder2/File1.txt"に変更してみたところ、逆の事象が発生しました。(Eclipseで実行したらNull参照で、Jarで実行したら正しく参照される)
jarから呼ばれているかどうかをコードの中で聞くのもどうかと思いますし、なにかやり方が間違っているのではないかと思っています。
何か、情報をお持ちの方がいらっしゃいましたら教えて頂けると幸いです。
※ 追記2018-04-23
指摘事項がありましたので、追記します
ソースコードについては以下のように記述しています。
package rsTest; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; public class Main { public static void main(String[] args) { try { StringBuffer sb = new StringBuffer(); InputStream in = ClassLoader.getSystemResourceAsStream("folder1/folder2/File1.txt"); InputStreamReader isr = new InputStreamReader(in, "UTF-8"); BufferedReader br = new BufferedReader(isr); String line; while ((line = br.readLine()) != null) { sb.append(line + "\r\n"); } br.close(); in.close(); System.out.println(sb.toString()); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
また、Jar化する手順については以下のとおりです。
1.パッケージエクスプローラでプロジェクトを選択して右クリックより「エクスポート」
2.「Java」=>「実行可能Jarファイル」を選択
3.起動構成とエクスポート先を指定し、ライブラリ処理で「生成されるJarに必須ライブラリを抽出」を指定して「完了」
![イ(7fe28d20d8ead40b0599995cee92f38e.png)
以上です。
回答2件
あなたの回答
tips
プレビュー