2013-05-29 58 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