あまりお勧めできませんが、基本的に.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
呼び出しは で失敗します。 IllegalArgumentException
uri
jar:jar:file:///Users/justingarrick/Desktop/test/my_war.war!/some_jar.jar!/
ネストされたアーカイブ ファイルの有効なjava.net.URI
スキームはありますか?