私はファイルから読み込むクラスを1つ含んでいるlarge-ishプロジェクトを持っています(私は以下のSSCCEで囲んでいます)。すべてが必要なように機能します。しかし、Apple Jar BundlerまたはEclipseの「Mac OS Xアプリケーションへのエクスポート」コマンド(these instructionsに従う)を使用すると機能しません。java.io.FileNotFoundException
が表示されます。ファイルにアクセスする.jarにAppleのJar Bundlerを使用する
私はなぜこれを取得しようとしていますFileNotFoundException
と私はそれを防ぐことができます。私の推測では、Eclipseは独自のクラスローダーなどを使用しており、クラスローダーはエクスポートされたjar
で正しく呼び出されていないと言い、したがってapp
です。
SSCCEは、次のコードは、Eclipseから実行したときに動作しますが、ないから.app
、java -jar
、あるいはbin
ディレクトリから実行java readfromfile.ReadFromFile
から。 ReadFromFile.javaで
:
package readfromfile;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class ReadFromFile {
public static void main(String[] args) {
String filepath = "src/readfromfile/file.txt";
try {
BufferedReader br = new BufferedReader(new FileReader(filepath));
JFrame frame = new JFrame();
frame.getContentPane().setLayout(
new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));
for (String line; (line = br.readLine()) != null;) {
frame.getContentPane().add(new JLabel(line));
}
frame.pack();
frame.setVisible(true);
} catch (FileNotFoundException e) {
System.err.println("File not found");
e.printStackTrace();
} catch (IOException e) {
System.err.println("IOexception");
e.printStackTrace();
}
}
}
file.txtをで:
I am text
* "ファイルにアクセスするa.jar" *リソースが含まれていますか?*** Jar?もしそうなら、それにアクセスするために 'File'を使うことはできません。代わりに' URL'を使います。 –
BTW - リソースが読み込み**および書き込み**のために必要な場合、[Javaプログラムが.jar内のファイルを読み書き用に使用するには?](http://stackoverflow.com/a/5052359/418556)を参照してください。 ) –
@AndrewThompson:はい、それは '.jar'の中にあります。いいえ、何も書いていません。 – wchargin