在尝试使用我的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.64位
A FileSystemNotFoundException
表示无法自动创建文件系统; 你还没有在这里创建它.
鉴于你的URI,你应该做的是拆分!
,使用之前的部分打开文件系统,然后从以下部分获取路径!
:
final Mapenv = 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
一旦你用它做.