2014-09-10 8 views
5

Come è possibile impostare DefaultFileSystemProvider da utilizzare, ad esempio JimfsFileSystemProvider? Il Javadoc per FileSystems.getDefault() dice che ho bisogno di impostare una proprietà di sistema, ma quando cerco di fare che ho un NoSuchMethodException:Impostare DefaultFileSystemProvider per il test

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

dello stack:

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

Devo installare qualcosa d'altro o si tratta di un bug in jimfs?

+1

La necessità di impostare il file system predefinito è generalmente un anti-pattern e intenzionalmente non implementata dal team di Jimfs. Vedi [il commento di Kevin Bourrillion] (https://plus.google.com/+googleguava/posts/a3idqfdnpzC) sul post Google+ di Guava che annuncia Jimfs. – dimo414

+0

@ dimo414 sembra un collegamento interrotto – Steve

+0

@Steve lo ha appena provato, per me va bene. – dimo414

risposta

3

Javadoc di FileSystems.getDefault() afferma che:

... il default FileSystemProvider viene istanziato invocando un costruttore un argomento il cui tipo parametro formale è FileSystemProvider.

Dal JimfsFileSystemProvider non hai come costruttore, non è possibile impostarlo come file system predefinito.

Questo è esattamente ciò che significa l'errore che si ottiene:

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

Il metodo <init> è il costruttore, e nessun costruttore trovato con i parametri java.nio.file.spi.FileSystemProvider.

+0

Immagino che sia la risposta corretta. Tuttavia, sarebbe bello se Jimfs lo supportasse ... – S1lentSt0rm

Problemi correlati