设置DefaultFileSystemProvider进行测试

S1l*_*0rm 5 java nio jimfs

DefaultFileSystemProvider例如,如何设置要使用JimfsFileSystemProvider?javadoc FileSystems.getDefault()说我需要设置一个系统属性,但当我尝试这样做时,我得到一个NoSuchMethodException:

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

堆栈跟踪:

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)
....
Run Code Online (Sandbox Code Playgroud)

我是否需要设置其他内容或者这是jimfs中的错误?

icz*_*cza 4

javadoc 指出FileSystems.getDefault()

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

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

这正是您得到的错误含义:

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

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