我试图从使用 java-webstart 下载的 jar 文件中提取一些文件。下面的代码用于定位 jar 并启动 FileSystem
1 final ProtectionDomain domain = this.getClass().getProtectionDomain();
2 final CodeSource source = domain.getCodeSource();
3 final URL url = source.getLocation();
4 final URI uri = url.toURI();
5 Path jarPath = Paths.get(uri);
6
7 FileSystem fs = FileSystems.newFileSystem(jarPath, null);
当 jar 文件位于本地磁盘上时,这可以正常工作,但在 JWS 场景中的第 5 行失败,因为
日志说: url=http://localhost:8080/myjarfile.jar
java.nio.file.FileSystemNotFoundException: Provider "http" not installed
at java.nio.file.Paths.get(Unknown Source)
如果我正确理解 JWS,myjarfile.jar 已经下载到某个缓存,因此为 http 实现 FileSystemProvider 以从 myjarfile.jar 获取一些内容似乎很慢而且很复杂。那么关于如何进行的任何好主意?