0

私は次のファイル構造を持っています:

+-src
  +-- code
+-resources
  +-- img
    +- logo.png
  +-- defaultConfig
    +- config.xml

Eclipse でコードを実行すると、実行可能な jar にエクスポートしたため、defaultConfigファイルが見つかりませんでした。

この方法でロゴにアクセスしていますが、動作します

URL url = getClass().getResource("/img/logo.png");
setIconImage(new ImageIcon(url).getImage());

へのアクセスはconfig.xml、異なるセットアップでは機能しません。

これが与えられました:

File config = new File("resources/defaultConfig/config.xml");

多くの検索の後、私はこれを試しました:

//example
String path = "resources\\defaultConfig\\config.xml");
File config = new File(createURIFromString(path));

./ありと.\なしで試してみました.

private URI createURIFromString(String path) {
    URI id = null;
    try {
        id =    getClass().getResource(path).toURI();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return id;
}

結果はnullポインターです。

私はもう試した

  • フォルダーをリソースディレクトリに追加します
  • フォルダーをルートディレクトリに追加します(srcと同じレイヤー)
  • Config フォルダーをリソース ディレクトリに追加します。

解決:

以前はファイルがjarファイルに含まれていなかったため、getResorceメソッドを使用するまで機能します。

4

3 に答える 3

3

なぜFileオブジェクトを作成するのですか?データは jar ファイル内に埋め込まれます。それを参照するように作成できるオブジェクトはありませんFile(どこかにカスタム ファイル システムがある場合を除きます)。

構成をファイルから読み取る必要があるものはすべて取り除き、代わりに任意のInputStream. その後、使用できます

InputStream stream = Foo.class.getResourceAsStream("/defaultConfig/config.xml");
于 2012-10-25T16:59:28.853 に答える
1

これは、jar-package 内の xml ファイルを読み取るのに役立ちます。

「File オブジェクトを取得することはできません (.jar に入るとファイルではないため) が、getResourceAsStream(path) を介してストリームとして取得できるはずです」

于 2012-10-25T16:59:51.587 に答える
0

すべてがパックされている場合getResourceは、画像を取得するのと同じ方法でリソースを取得する必要がありますが、パスが異なる場合があります。

URL url = getClass().getResource("/defaultConfig/config.xml");

その後、この URL から直接読み取ることができます。URL からの直接読み取りを参照してください。

BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

String inputLine;
while ((inputLine = in.readLine()) != null)
    System.out.println(inputLine);
in.close();
于 2012-10-25T17:25:56.090 に答える