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时,很好;否则就注入文件系统本身。(另外,停止编写依赖于系统默认值的代码!)”