【发布时间】:2014-05-01 14:08:24
【问题描述】:
在尝试使用我的 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
【问题讨论】:
-
对于 jars stackoverflow.com/questions/5171957/access-file-in-jar-file 你必须做些不同的事情
-
答案中使用的方法读取单个文件为
Stream,我想复制整个目录。我添加了一个屏幕截图来澄清 -
是的,我在我的
main()某处这样做了 -
在 IDE (Eclipse) 中运行时,资源实际上是一个文件。如果您打包应用程序并尝试在 IDE 之外运行它,问题就会浮出水面。