jar ファイルをエクスポートしたときリソースが開けなくなる
以下のようなエラーが出たときの対処法をメモしておきます.
症状
eclipse 上ではファイル読み込みができているのに,jar ファイルへエクスポートしたときファイルへのパスが通ってなくてエラーになる.
例えば,以下のように manual は eclipse 上では読み込んで実行できるのに,jar ファイルにすると読み込めなくなる.
BufferedReader br = new BufferedReader(new FileReader("manual"));
対処
まず,eclipse 上でファイル読み込みをしている Java ファイルがある場所に,読み込むファイルを置く.
例えば,Test.java というファイルで manual というファイルを読み込みたいのなら,Test.java があるディレクトリに manual を置く.
そして,以下のようにしてファイルを取得する.
//マニュアルファイルを取得する URL url = Test.class.getResource("manual"); try { BufferedReader br = new BufferedReader( new InputStreamReader(url.openStream())); String str = null; while((str = br.readLine()) != null){ System.out.println(str); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
仮に最初の FileReader を使った方法でファイルを読み込むためには,出力した jar ファイルがあるディレクトリに manual というファイルが存在している必要がある.