0

Java プログラムが大量のデータ ファイルを参照しています。これらを、src/ および bin/ とともに、data/ という最上位ディレクトリに配置しました。Eclipse では、data/ および ../data/ への参照はどちらも機能しているようです。コマンドラインから実行すると、../data/ のみが機能します。

bin/ および data/ ディレクトリを jar に入れ、エントリ ポイントを正しく設定すると、jar内の data/ ディレクトリにアクセスする必要があることを認識していないようです。私がそれを機能させることができた唯一の方法は、参照を ../data/ に設定し、jar を bin ディレクトリに配置することです。これは自己完結型ではないため、明らかに私には何の役にも立ちません。

それらを機能させるには、参照に対して何をする必要がありますか?

ありがとう

4

3 に答える 3

3

Eclipse でもコンパイル済みの JAR でも、クラスパス相対の方法でファイルにアクセスすることをお勧めします。

いくつかの方法がありますが、基本的な JDK のみのアプローチは、クラスのgetResourceAsStream()メソッドを使用して、読み込むことができる InputStream オブジェクトにアクセスできるようにすることです。

于 2010-09-29T02:59:42.770 に答える
1

リソースが jar ファイルにある場合は、次の方法を使用してそれらを読み取ることを検討してください。

class Class {
    InputStream getResourceAsStream(String name)
}

これは、作業ディレクトリに関連するのではなく、クラス (jar にある可能性があります) に関連するリソースを探します。

于 2010-09-29T03:00:16.437 に答える
-1

この道を教えてくれてありがとう、みんな。私はIOがまだあまり得意ではないので、本当にハッキングされた回避策を実行することになりました。getClass() を使用して URL を作成しました。

http://forums.sun.com/thread.jspa?threadID=5258488

次に、この文字列から新しい File オブジェクトを作成しました (new File(file)):

文字列ファイル = url.toString().replaceFirst("file:", "");

これにより、ファイル オブジェクトを参照する同じコードを保持することができました。

于 2010-09-29T18:21:38.213 に答える