2012-05-17 34 views
-3

我與Eclipse中的Hadoop-1.0.1工作。我試圖運行wordcount應用程序,但是當我跑我WordCount.java時,Eclipse顯示我下面的錯誤java.lang.NoClassDefFoundError在Hadoop的1.0.1

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 
    at org.apache.hadoop.conf.Configuration.<clinit>(Configuration.java:143) 
    at test.WordCount.main(WordCount.java:56) 
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
    ... 2 more 

我有我的classpath Hadoop的核心1.0.1.jar。如果應用程序需要更多的罐子

+0

你有Apache的公共記錄jar文件在類路徑? –

+0

nope ...我在我的classpath中只有hadoop-core-1.0.1.jar。讓我添加它。 –

+1

將所有依賴項lib-jar添加到classpath中。 –

回答

5

看來你得到了這個錯誤,因爲任何兩個重要的日誌類commons-logging-1.1.1.jar和commons-logging-api-1.0.4.jar都與常見的日誌記錄相關, classpath或者你只是沒有它。

在大多數情況下,這些文件與其他的Hadoop罐\ lib文件夾,所以當你設置類路徑,這些罐子都可以訪問。請確認您的計算機中是否包含這些文件,並將其設置在您的類路徑中,以便它們可以訪問。

此外,當您運行「hadoop版本」版本作爲結果出現時,相同的hadoop-core - SNAPSHOT.jar必須位於$ HADOOP_HOME位置。

你提到你正在運行WordCount.java相反,你應該說你正在運行WordCount作業,因爲你總是使用編譯的應用程序作爲jar而不是java。

$斌/ Hadoop的罐子/usr/jboss/wordcount.jar org.myhadoop.WordCount在/ usr/JBoss的/單詞計數/輸入的/ usr/JBoss的/單詞計數/輸出

+0

我忘了在我的課程路徑中添加apache common logging.jar。但是我沒有運行wordcount.jar。我想設計自己的地圖縮小,現在我正在運行[wordcountV2]的源代碼(http://hadoop.apache.org/common/docs/current/mapred_tutorial.html#Example%3a+WordCount+v2。 0)作爲測試程序來檢查天氣一切正常或不。 –

1

hadoop-core-1.0.1可能不在你的類路徑中:commons-logging實際上包含在hadoop jar中多次!

1

看來你不包括共記錄jar文件,以便 jar文件取決於版本,然後將其列入你的程序並運行它謝謝您

相關問題