在尝试使用我的 java 应用程序将我的 jar 文件中的一些文件复制到临时目录时,抛出以下异常:
java.nio.file.FileSystemNotFoundException
at com.sun.nio.zipfs.ZipFileSystemProvider.getFileSystem(ZipFileSystemProvider.java:171)
at com.sun.nio.zipfs.ZipFileSystemProvider.getPath(ZipFileSystemProvider.java:157)
at java.nio.file.Paths.get(Unknown Source)
at com.sora.util.walltoggle.pro.WebViewPresentation.setupTempFiles(WebViewPresentation.java:83)
....
这是我的 setupTempFiles
(带有行号)的一小部分:
81. URI uri = getClass().getResource("/webViewPresentation").toURI();
//prints: URI->jar:file:/C:/Users/Tom/Dropbox/WallTogglePro.jar!/webViewPresentation
82. System.out.println("URI->" + uri );
83. Path source = Paths.get(uri);
webViewPresentation
目录位于我的 jar 的根目录中:
只有当我将我的应用程序打包为 jar 时才会出现此问题,在 Eclipse 中调试没有问题。我怀疑这与 bug 有关但我不确定如何解决这个问题。
任何帮助表示赞赏
如果重要的话:
我正在使用 Java 8 build 1.8.0-b132
Windows 7 Ult. x64
最佳答案
FileSystemNotFoundException
表示文件系统无法自动创建;而且你还没有在这里创建它。
给定你的 URI,你应该做的是拆分 !
,使用它之前的部分打开文件系统,然后从 !
之后的部分获取路径:
final Map<String, String> env = new HashMap<>();
final String[] array = uri.toString().split("!");
final FileSystem fs = FileSystems.newFileSystem(URI.create(array[0]), env);
final Path path = fs.getPath(array[1]);
请注意,一旦你完成了 .close()
你的 FileSystem
。
关于jar 中的 Java 访问文件导致 java.nio.file.FileSystemNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22605666/