2014-09-10 81 views
5

如何设置​​使用,例如JimfsFileSystemProvider?对于FileSystems.getDefault()的Javadoc说我需要设置一个系统属性,但是当我尝试这样做,我得到一个NoSuchMethodException设置DefaultFileSystemProvider进行测试

System.setProperty("java.nio.file.spi.DefaultFileSystemProvider", 
        "com.google.common.jimfs.JimfsFileSystemProvider"); 
FileSystems.getDefault(); 

堆栈跟踪:

java.lang.Error: java.lang.NoSuchMethodException: com.google.common.jimfs.JimfsFileSystemProvider.<init>(java.nio.file.spi.FileSystemProvider) 
at java.nio.file.FileSystems$DefaultFileSystemHolder.getDefaultProvider(FileSystems.java:128) 
.... 

我是否需要设立别的东西或者这是jimfs中的错误?

+1

需要设置默认文件系统通常是一种反模式,故意不由Jimfs团队实施。查看[Kevin Bourrillion的评论](https://plus.google.com/+googleguava/posts/a3idqfdnpzC)在Guava的Google+帖子上宣布Jimfs。 – dimo414 2014-11-04 18:27:20

+0

@ dimo414看起来像一个断开的链接 – Steve 2017-04-12 17:23:29

+0

@Steve只是试了一下,它为我加载罚款。 – dimo414 2017-04-12 20:11:39

回答

3

FileSystems.getDefault()的Javadoc指出:

...默认FileSystemProvider是通过调用一个参数的构造函数,其形参类型是FileSystemProvider实例化。

由于JimfsFileSystemProvider没有这样的构造函数,所以不能将其设置为默认文件系统。

这正是错误意味着你:

java.lang.Error: java.lang.NoSuchMethodException: com.google.common.jimfs.JimfsFileSystemProvider.<init>(java.nio.file.spi.FileSystemProvider) 

方法<init>是构造函数,没有构造函数参数java.nio.file.spi.FileSystemProvider发现。

+0

我想这是正确的答案。不过,如果Jimfs支持这一点,那将会很好。 – S1lentSt0rm 2014-09-10 11:22:16

相关问题