2012-03-01 35 views
0

下面提到的是我在嘗試執行java版本的WordCout時遇到的錯誤。我能夠成功地編譯相同的內容,但我無法弄清楚它爲什麼現在在討厭。我嘗試了庫路徑的所有組合,思考一些依賴性問題,但仍然卡住。任何幫助,將不勝感激。無法運行WordCount編譯器問題的java示例

[email protected]:/opt/hadoop# java -cp lib/commons-cli-1.2.jar:hadoop-core-1.0.0.jar . /src/examples/org/apache/hadoop/examples/WordCount 
Exception in thread "main" java.lang.NoClassDefFoundError:/
Caused by: java.lang.ClassNotFoundException: . 
    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) 
Could not find the main class: .. Program will exit. 
[email protected]:/opt/hadoop#. 

回答

1

提示:

Caused by: java.lang.ClassNotFoundException: .

java是想告訴你,它無法找到名爲.

1

當你運行一個Java程序的類,你需要指定實際的類你正在執行。你有這麼遠這是什麼:

java -cp lib/commons-cli-1.2.jar:hadoop-core-1.0.0.jar . 

這一切的意思是,這兩個JAR應該在CLASSPATH,而你試圖運行一些類被稱爲「.」當然有沒有這樣的類名稱爲「..應該是您嘗試運行的類的名稱,而不是.。該類應該有一個main()方法。

+0

要執行的文件中提到,它得到了隱藏,因爲滾動條:)這裏 – Pramit 2012-03-01 05:03:36

+0

幾個問題。在'.'和類的路徑的其餘部分之間有一個空格('/ src/examples/...')刪除空格。而且,你也不能指定一個類來執行文件系統路徑。該類必須在你的'CLASSPATH'中。你可以在你的CLASSPATH中加入'/ src/examples',或者把'cd'加入'/ src/examples'中並從那裏運行。無論哪種方式,該類應該被指定爲'org.apache.hadoop.examples.WordCount'。 – 2012-03-01 09:29:52

0

試試刪除「。」在你的命令。

0

因爲字計數例子,是旨在發動MapReduce工作,它旨在與以下運行:

bin/hadoop jar hadoop-*-examples.jar wordcount [-m <#maps>] [-r <#reducers>] <in-dir> <out-dir> 

這將設置classpath中爲您服務。

http://wiki.apache.org/hadoop/WordCount