Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为测试设置DefaultFileSystemProvider_Java_Nio_Jimfs - Fatal编程技术网

Java 为测试设置DefaultFileSystemProvider

Java 为测试设置DefaultFileSystemProvider,java,nio,jimfs,Java,Nio,Jimfs,如何将DefaultFileSystemProvider设置为使用,例如JimfsFileSystemProvider?的javadoc说我需要设置一个系统属性,但当我尝试设置时,会得到一个NoSuchMethodException: System.setProperty("java.nio.file.spi.DefaultFileSystemProvider", "com.google.common.jimfs.JimfsFileSystemProvide

如何将
DefaultFileSystemProvider
设置为使用,例如
JimfsFileSystemProvider
?的javadoc说我需要设置一个系统属性,但当我尝试设置时,会得到一个
NoSuchMethodException

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)
....
java.lang.Error:java.lang.NoSuchMethodException:com.google.common.jimfs.JimfsFileSystemProvider.(java.nio.file.spi.FileSystemProvider)
位于java.nio.file.FileSystems$DefaultFileSystemHolder.getDefaultProvider(FileSystems.java:128)
....
我是否需要设置其他内容,或者这是jimfs中的一个bug?

javadoc声明:

…通过调用形式参数类型为
FileSystemProvider
的单参数构造函数来实例化默认的
FileSystemProvider

由于
JimfsFileSystemProvider
没有此类构造函数,因此无法将其设置为默认文件系统

这正是错误的意思,您得到:

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

方法
是构造函数,没有找到带有参数
java.nio.file.spi.FileSystemProvider

的构造函数,我想这是正确的答案。但是,如果Jimfs能够支持这一点,那就太好了……需要设置默认文件系统通常是一种反模式,Jimfs团队故意不实现它。请参阅Guava的Google+post上宣布Jimfs的内容。@dimo414看起来像一个坏了的link@Steve刚试过,对我来说很好。@dimo414真的……很有趣。也许是我工作的代理/防火墙设置的问题。对此很抱歉。Kevin Bourrillion说:“我们认为这不是正确的方法——改变全局静态会造成巨大的混乱。相反,停止编写依赖于默认文件系统的代码。当代码可以接受路径并消除其隐式fs时,很好;否则就注入文件系统本身。(另外,停止编写依赖于系统默认值的代码!)”