Ich versuche NIO FileSystem zu verwenden, um auf ein Glas in einem anderen Glas zuzugreifen. Rufen Sie die außerhalb jar my-outer.jar und die innere my-inner.jar (mit Java 8 und Windows 7, aber ich denke, dass ist nicht das Problem)Wie kann ich ein Dateisystem zu einem Glas in einem anderen Glas erstellen
Ich verwende den folgenden Code
String zipfilePath = "c:/testfs/my-outer.jar!/my-inner.jar";
Path path = Paths.get(zipfilePath);
try(ZipFileSystem zipfs = (ZipFileSystem) FileSystems.newFileSystem(path, null))
{ ... }
aber ich bin immer die unten Ausnahme, wenn diese newFileSystem zu erstellen versuchen:
Exception in thread "main" java.nio.file.FileSystemNotFoundException: C:\testfs\my-outer.jar!\my-inner.jar
Beachten sie, dass, wenn ich nur das äußere Glas als Filesystem, das perfekt funktioniert gut und ich kann Dateien aus schön lesen und schreiben . Gerade wenn ich versuche, ins innere Archiv zu gelangen, beginnen die Schwierigkeiten.
Unterstützt FileSystem nicht die JarURLConnection-Notation?
Vom Blick auf dekompilierte Quellen von ZipFileSystem scheint es, dass es nur "echte" Dateien unterstützt. Für verschachtelte ZIP (JAR) -Archive müssen Sie "low-level" java.util.zip-Paket verwenden (oder extrahieren Sie den inneren Kreisbogen auf den Datenträger, obwohl ich das nicht eine gute Lösung nennen würde). – vbezhenar
Keine gute Idee. Selbst ein JAR-Dateisystem mit einer Ebene wird sehr schlecht funktionieren. – EJP