11

ClassLoader.getResourceAsStream(...) を使用して実行可能な JAR ファイル自体からファイルを読み取ることは、私にとって既知の概念ですが、Java NIO を使用して同じことを行うにはどうすればよいでしょうか?

目標は、次のような機能を持つことです。

static String readFullyFromJar(String filename) {
    final Path path = Paths.get(Main.class.getResource(fileName).toURI());
    final byte[] bytes = Files.readAllBytes(path);
    return new String(bytes, CHARSET_ASCII);
}

これは IDE では問題なく動作しますが、

java.nio.file.FileSystemNotFoundException
    at com.sun.nio.zipfs.ZipFileSystemProvider.getFileSystem(ZipFileSystemProvider.java:171))

ターゲットファイルが正しい場所にあるにもかかわらず、実際のJARでこれを試してみると。

4

1 に答える 1

9

上記のコードは実際には正しいことがわかりました。問題は Java 自体にあります。

このBug IDによると、Java は ZipFileSystemProvider を適切に使用していません。Java 8で修正される予定です。 (私の実際の問題は、この複製レポートに記載されています)

于 2013-10-10T22:51:47.397 に答える