1

NetbeansとImageIconsなどのJARファイルの両方にロードするリソースを取得できましたが、JARファイルからプログラムを実行すると、同じディレクトリから「読み取る」ことができなくなりました。クラスパスディレクトリ内のディレクトリとファイルを一覧表示したいのですが、JARファイルからプログラムを実行すると、ディレクトリが読み取れなくなります。Netbeansでは正常に動作します。

tileDirectory = new File(TileDirectoryLister.class.getResource("/resources/images/tiles").getPath());

    jta.append("\nThe class path for the tile directory is:"
            + "\n\t" + tileDirectory.getPath());

    jta.append("\nThe tile directory is readable: " + tileDirectory.canRead());

Netbeansから実行すると、trueと出力されます。JARファイルから実行すると、falseが出力されます。JARファイルから実行すると印刷されるのはなぜですか?canReadfalse

4

1 に答える 1

1

File は、ファイル システム上のパスを表します。アイコンはjarファイル内にあります。ファイルを使用してアクセスすることはできません。

jar ファイル内のリソースにアクセスするには、次を使用します。

SomeClass.class.getResourceAsStream("/resources/images/tiles/SomeIcon.png");

InputStream を取得する、または

SomeClass.class.getResource("/resources/images/tiles/SomeIcon.png");

URL を取得します。

于 2012-11-28T21:56:04.600 に答える