DATが想定外の階層に格納されているか、格納されていない可能性はありませんか?
jarコマンドか解凍ソフトで中身を確認してください。
それと、JARの中のDATは書き込みできません。
(コメント 2015/01/06 22:35 の回答)
リソースにアクセスするには、getClass().getResource(String)
でなければなりません。
DATファイルはEclipse上ではファイルとしてもアクセスできますが、JARの中のファイルはFileInputStream
などではアクセスできません。
おそらくEclipseでアクセスしているDATファイルは、クラスパスに含まれるものとは別のものです。Eclipseならば、Java以外のリソースファイルはbinディレクトリーにコピーされているはずです。Eclipseで実行する場合はbinがクラスパスになります。
Eclipseで実行する場合は、binの下でない方にアクセスしているのではないでしょうか。getClass().getResource(String)
でアクセスしている画像ファイルは、binの下のものを参照しているため、JARに入れた後でも参照できているのです。
「プログラムが起動中に設定された内容はどこに記憶するのか?」ですが、
1つ目は、専用の作業ディレクトリーを作る方法です。
有名なプロダクトの多くでも、たとえばMaven2なら$HOME/.m2
、Gradleなら$HOME/.gradle
のようなディレクトリーを作成して、そこにファイルを格納しています。
$HOME
でなく、JARファイルと同じかカレントディレクトリーに作るケースもあります。
2つ目は、java.util.prefs
というAPIを使う方法です。
これは、WindowsのレジストリーのようなPreferencesという仕組みを使うものです。設定ファイルをどこに格納するかを考えなくても設定を読み書きすることができます。
ただし、セキュリティー上、誰でも自由にアクセスできるとは限りません。
パッケージ java.util.prefs (Java SE 8 APIドキュメント)
Preferences APIを使用してオブジェクトを保存する (IBM developerWorks
3つ目は、何かしらのリモートリソースを使って保存する方法です。
JDBCとか、Webサービスのようなものを使って、ネットワーク上のリソースに保存します。
この方法は、実行時にそのサーバーがアクセスできる環境にあることが必要になりますし、セキュリティーの問題が発生します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/01/06 13:35
2015/01/06 14:09
退会済みユーザー
2015/01/06 14:36
退会済みユーザー
2015/01/06 15:59
2015/01/06 16:09