2012-09-20 134 views
5

這是我在嘗試編譯此WordCount.java文件時遇到的錯誤。Cloudera Hadoop Class file for org.apache.hadoop.classification.InterfaceAudience not found

$javac -classpath /usr/lib/hadoop/hadoop-common-2.0.0-cdh4.0.1.jar:/usr/lib/hadoop/client/hadoop-mapreduce-client-core-2.0.0-cdh4.0.1.jar -d ~/wordcount /usr/lib/hadoop/wordcount_classes/WordCount.java 
/usr/lib/hadoop/hadoop-common-2.0.0-cdh4.0.1.jar(org/apache/hadoop/fs/Path.class): 

warning: Cannot find annotation method 'value()' in type 'LimitedPrivate': class file for org.apache.hadoop.classification.InterfaceAudience not found 
1 warning 
+0

@harshJ有什麼建議嗎? – user1663321

回答

12
+0

你怎麼把這個jar添加到類路徑中?我需要在javac -cp ....中指定它嗎? – gaussd

+1

以和其他人相同的方式添加(見問題):'javac -classpath hadoop-annotations-2.0.0-cdh4.0.1.jar:[other_jars]' –

4

步驟我是如何解決這個問題:

  1. 我創建了一個目錄中稱爲單詞計數(/home/cloudera/wordcount)。
  2. 加入WordCount.java/home/cloudera/wordcount目錄。
  3. 目錄內我跑以下命令:

    javac \ 
    -cp /usr/lib/hadoop/\*:/usr/lib/hadoop/client-0.20/\*:/usr/lib/hadoop/lib/\* \ 
    WordCount.java 
    -d /home/cloudera/wordcount/wordcount_classes 
    
2

Hadoop的2.6.0版,你需要添加下面的罐子:

的javac -classpath $ HADOOP_HOME /股/ Hadoop的/common/hadoop-common-2.6.0.jar:$HADOOP_HOME/share/hadoop/common/lib/hadoop-annotations-2.6.0.jar:$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-core -2.6.0.jar /path_to_your_java_file/WordCount.java

0

快速(但不建議用於生產)在Hadoop的2.6.x的是

的Unix/MacOS的

$ javac -classpath .:$(mapred classpath):$CLASSPATH -d ~/wordcount /usr/lib/hadoop/wordcount_classes/WordCount.java 
0

評論從POM下面的依賴,如果您有它

<dependency> 
     <groupId>org.apache.hive</groupId> 
     <artifactId>hive-exec</artifactId> 
     <version>1.2.1</version> 
    </dependency> 

而且然後啓用hadoop-annotations