2

1 年前、私は卒業制作のために JavaFX 2.0 アプリケーションを作成しました。しかし、1年が経過した後、以前は機能していたコードに問題があります。

したがって、コードでは、フォルダーを取得してそのファイルを一覧表示する必要があります。

File dir = new File(getClass().getResource("media/images/backgrounds/").getPath()); 
File[] files = dir.listFiles();
for (File file : files) {
    list.add(file.toURI().toString());
}

そして、「for (File file : files) {」という行で java.lang.NullPointerException を取得しています

System.out.print(getClass().getResource("media/images/backgrounds/").getPath());

ファイルを返します:/D:/JavafxApp1/JavafxApp/dist/run2054723721/JavafxApp.jar!/javafxapp/media/images/backgrounds/

JAR ファイルからストリームからファイルを読み取るための別の方法を作成したくありません。ファイルを取得するこの方法は、1 年前には 100% 機能していましたが、なぜ今は機能しないのでしょうか? ありがとう!

4

2 に答える 2

2

フォルダが jar に入っているため、機能しません。1年前はそうではなかったと思います。ディレクトリがjarの外にある場合、別のコードを用意する必要はないと思います:

getResourceAsStream を使用してディレクトリのファイルを一覧表示する方法を示すこの例を見つけました。次に、getResourceAsStream によってこれらのリソースにアクセスできます。瓶の中にいたか外にいたかは決してわかりません:-)

于 2013-01-12T15:48:53.347 に答える
2

を作成しないでくださいFile。jar 内のリソースにアクセスするには機能しません。

getClass().getResource()

すでにあなたを返しているURLので、そのURLまたは別のオプションを使用してくださいgetResourceAsStream()

于 2013-01-12T16:50:53.633 に答える