2012-09-20 128 views
2
[email protected]:/usr/lib/hadoop/wordcount_classes$ 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 /usr/lib/hadoop/wordcount_classes /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 
/usr/lib/hadoop/wordcount_classes/WordCount.java:14: error: error while writing Map: could not create parent directories 
public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { 
      ^
1 error 
1 warning 

這個錯誤是什麼?我無法編譯這個wordcount.java文件!不能編譯WordCount.java

人們一直在告訴我正確設置我的java類路徑。有人會對我如何解決這個問題有任何評論嗎?請幫忙!謝謝!

+0

你可以發佈一些代碼...有明顯的錯誤。設置classpath:http://docs.oracle.com/javase/tutorial/essential/environment/paths.html – RossC

回答

4

-d /usr/lib/hadoop/wordcount_classes 

指示要編寫的類文件。它是否正確 ?我懷疑你沒有權限寫在那裏,因此:

error while writing Map: could not create parent directories 

您可以創建在該目錄中的目錄(提示:使用mkdir)?我不認爲/usr/lib目錄是一個很好的地方,即使你可以,順便說一句。我希望你在你的主目錄下執行開發。

/usr目錄通常用於安裝程序,庫等,並對普通用戶進行寫入限制。 man hier對Unix中使用的不同目錄給出了很好的解釋。

+0

謝謝!這有助於無法創建父目錄!我將其更改爲位於〜中的名爲wordcount的新文件夾。現在爲什麼我仍然得到1警告?這裏是我得到的: – user1663321

+0

mark @ maestro1:〜$ 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):警告:無法在類型'LimitedPrivate'中找到註釋方法'value()':未找到org.apache.hadoop.classification.InterfaceAudience的類文件 1警告 – user1663321

+0

@ user1663321 - 這也許是一個與Hadoop更相關的不同問題。很高興的東西工作 –