7

あまりお勧めできませんが、基本的に.zipファイル ( .ear.war.jarなど) に名前が変更されたアーカイブ形式を、jar: URI スキームを使用して読み取ることができます。

たとえば、次のコードは、uri変数が単一の最上位アーカイブに評価される場合、たとえば次の場合にuriうまく機能します。jar:file:///Users/justingarrick/Desktop/test/my_war.war!/

private FileSystem createZipFileSystem(Path path) throws IOException {
    URI uri = URI.create("jar:" + path.toUri().toString());
    FileSystem fs;

    try {
        fs = FileSystems.getFileSystem(uri);
    } catch (FileSystemNotFoundException e) {
        fs = FileSystems.newFileSystem(uri, new HashMap<>());
    }

    return fs;
}

ただし、URI にネストされたアーカイブが含まれている場合 (たとえば、等しい場合( .war内に.jargetFileSystem ))、およびのnewFileSystem呼び出しは で失敗します。 IllegalArgumentExceptionurijar:jar:file:///Users/justingarrick/Desktop/test/my_war.war!/some_jar.jar!/

ネストされたアーカイブ ファイルの有効なjava.net.URIスキームはありますか?

4

1 に答える 1