在使用nio加载文件时,在idea中运行没有问题,但打成jar包后在windows和linux下都有问题:代码语言:javascript代码运行次数:0运行复制
<code class="javascript"> public static void main(String[] args) throws Exception{ // SpringApplication.run(MarketCollectApplication.class,args); URI uri = MarketCollectApplication.class.getClassLoader().getResource("conf/sh.txt").toURI(); FileSystem aDefault = FileSystems.getDefault(); System.out.println(aDefault.getClass()); FileSystemProvider provider = FileSystems.getDefault().provider(); System.out.println(provider.getClass()); System.out.println("====================" + uri.getScheme()); List<FileSystemProvider> fileSystemProviders = FileSystemProvider.installedProviders(); fileSystemProviders.forEach(p -> { System.out.println(p.getClass()); }); Path path = Paths.get(uri); }</code><code class="javascript">class sun.nio.fs.WindowsFileSystemclass sun.nio.fs.WindowsFileSystemProvider====================fileclass sun.nio.fs.WindowsFileSystemProviderclass com.sun.nio.zipfs.ZipFileSystemProvider</code>


<code class="javascript">public static Path get(URI uri) { String scheme = uri.getScheme(); if (scheme == null) throw new IllegalArgumentException("Missing scheme"); // check for default provider to avoid loading of installed providers if (scheme.equalsIgnoreCase("file")) return FileSystems.getDefault().provider().getPath(uri); // try to find provider for (FileSystemProvider provider: FileSystemProvider.installedProviders()) { if (provider.getScheme().equalsIgnoreCase(scheme)) { return provider.getPath(uri); } } throw new FileSystemNotFoundException("Provider \"" + scheme + "\" not installed"); }</code><code class="javascript"> Path path = null; try{ path = Paths.get(uri); }catch (Exception e){ //@see https://stackoverflow.com/questions/25032716/getting-filesystemnotfoundexception-from-zipfilesystemprovider-when-creating-a-p //@see http://docs.oracle.com/javase/7/docs/technotes/guides/io/fsp/zipfilesystemprovider.html FileSystem zipfs = FileSystems.newFileSystem(uri, env); path = Paths.get(uri); }</code>或者使用其他办法加载资源文件:
代码语言:javascript代码运行次数:0运行复制<code class="javascript">byte[] data;try (InputStream in = getClass().getResourceAsStream("/elasticsearch/segmentsIndex.json")) { data = IOUtils.toByteArray(in);}</code>以上就是nio使用中的java.nio.file.FileSystemNotFoundException分析析的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号