Установить DefaultFileSystemProvider для тестирования

Как я могу установить DefaultFileSystemProvider использовать, например, JimfsFileSystemProvider? Javadoc для FileSystems.getDefault() говорит, что мне нужно установить системное свойство, но когда я пытаюсь это сделать, я получаю 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)
....

Нужно ли устанавливать что-то еще или это ошибка в jimfs?

1 ответ

Решение

Javadoc of FileSystems.getDefault() говорится, что:

...по умолчанию 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,

Другие вопросы по тегам