2014-09-10 18 views
5

Wie kann ich die DefaultFileSystemProvider verwenden, zum Beispiel JimfsFileSystemProvider? Die javadoc für FileSystems.getDefault() sagt, ich brauche eine Systemeigenschaft zu setzen, aber wenn ich versuche zu tun, dass ich ein NoSuchMethodException:Set DefaultFileSystemProvider zum Testen

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

Stack Trace:

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) 
.... 

Muss ich etwas anderes einrichten oder ist das ein Fehler in jimfs?

+1

Das Festlegen des Standarddateisystems ist im Allgemeinen ein Anti-Pattern und wird vom Jimfs-Team absichtlich nicht implementiert. Siehe [Kevin Bourrillions Kommentar] (https://plus.google.com/+googleguava/posts/a3idqfdnpzC) auf Guavas Google+ Beitrag, in dem Jimfs angekündigt wird. – dimo414

+0

@ dimo414 sieht aus wie eine defekte Verbindung – Steve

+0

@Steve gerade versucht es, es lädt gut für mich. – dimo414

Antwort

3

Die javadoc von FileSystems.getDefault() heißt es:

... die Standard FileSystemProvider durch den Aufruf einer ein Argument Konstruktor, dessen formale Parameter vom Typ instanziiert ist FileSystemProvider.

Da JimfsFileSystemProvider keinen solchen Konstruktor hat, können Sie ihn nicht als Standarddateisystem festlegen.

Das ist genau das, was der Fehler bedeutet, dass Sie erhalten:

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

Verfahren <init> der Konstruktor ist, und kein Konstruktor mit Parametern java.nio.file.spi.FileSystemProvider gefunden.

+0

Ich denke, das ist die richtige Antwort. Es wäre jedoch schön, wenn Jimfs das unterstützen würde ... – S1lentSt0rm