2013-05-29 60 views
1

java.io.FileSystem在java.io中不公開;不能從外面包訪問 這是該行的編譯點使用Hadoop編譯Java時出錯

FileSystem fs = FileSystem.get(configuration); 

我不明白爲什麼它不能被訪問。下面是進口

import java.io.*; 
import java.io.FileSystem; 
import java.nio.file.Paths; 
import org.apache.hadoop.io.SequenceFile; 
import org.apache.hadoop.io.SequenceFile.Writer; 
import org.apache.hadoop.io.*; 
import org.apache.hadoop.conf.Configuration; 
import org.apache.hadoop.conf.*; 
import java.util.*; 
import java.io.Writer; 
import org.apache.hadoop.*; 
+0

沒有所謂'java.io.FileSystem'據我所知沒有這樣的事情。最接近的是'java.nio.FileSystem' – nhahtdh

+0

@nhahtdh它也不是什麼需要的 – Woot4Moo

+0

我會建議不要做'*'(星)進口。 – Woot4Moo

回答

3

錯誤FileSystem對象以及錯誤Paths對象。您想要:

org.apache.hadoop.fs.FileSystem 
org.apache.hadoop.fs.Path 

您正在處理Hadoop FileSystem而不是默認的Java實現。回想一下,你在做hadoop fs -ls其中fs意味着在命令行上的文件系統。

+0

是的,hadoop'FileSystem'是另一種可能性。我只是猜測'nio',因爲還有'import java.nio.file.Paths'。但僅僅看單純的導入還不足以知道實際需要哪一類。 (但在這種情況下做一個猜測hadoop是相當相關的) – nhahtdh

+0

@nhahtdh哦,我什至沒有看到,OP也導入了錯誤的路徑對象 – Woot4Moo

1

更換

import java.io.FileSystem; 

import org.apache.hadoop.fs.FileSystem; 
+0

謝謝,這擺脫了一些相關的錯誤! – SLearner