2014-09-10 120 views
5

如何設置​​使用,例如JimfsFileSystemProvider?對於FileSystems.getDefault()的Javadoc說我需要設置一個系統屬性,但是當我嘗試這樣做,我得到一個NoSuchMethodException設置DefaultFileSystemProvider進行測試

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

需要設置默認文件系統通常是一種反模式,故意不由Jimfs團隊實施。查看[Kevin Bourrillion的評論](https://plus.google.com/+googleguava/posts/a3idqfdnpzC)在Guava的Google+帖子上宣佈Jimfs。 – dimo414 2014-11-04 18:27:20

+0

@ dimo414看起來像一個斷開的鏈接 – Steve 2017-04-12 17:23:29

+0

@Steve只是試了一下,它爲我加載罰款。 – dimo414 2017-04-12 20:11:39

回答

3

FileSystems.getDefault()的Javadoc指出:

...默認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發現。

+0

我想這是正確的答案。不過,如果Jimfs支持這一點,那將會很好。 – S1lentSt0rm 2014-09-10 11:22:16

相關問題