2014-08-28 31 views
0

我的問題非常接近這個問題,這已經得到了解答。 Could not load class when executed with -cp option當用``hadoop classpath`的-cp選項執行時,無法加載類

然而,情況稍有不同

$ javac -cp `hadoop classpath` GrabHDFSBlockInfo.java 
$ java -cp `hadoop classpath` GrabHDFSBlockInfo 
Error: Could not find or load main class GrabHDFSBlockInfo 
$ ls GrabHDFSBlockInfo* 
GrabHDFSBlockInfo.class GrabHDFSBlockInfo.java 

,所以我想使用的hadoop classpath快捷在這種情況下。

的幫助

安德麥


編輯非常感謝:感謝大家的幫助。由於hadoop classpath在我的羣集上沒有太多變化。我最終更改我的.bashrc,通過設置一個var與擴展類路徑padding':'。那麼只需使用$ java -cp $ classpath GrabHDFSBlockInfo

+0

是您的類的包? – Ashalynd 2014-08-28 19:16:03

+0

沒有。它只是一個簡單的客戶端代碼。我將它編譯成.class到同一個目錄中。 – user3334213 2014-08-29 00:58:05

回答

0

hadoop classpath已知問題之一是它包含通配符。因此,hadoop庫不能正確加載。作爲解決方法,請嘗試擴展通配符,將其替換爲位於那裏的一系列罐子。這很可能會有所幫助。

類似用途有點zsh的腳本(雖然我簡單地更新現有存在CLASSPATH):

classpath=`hadoop classpath | tr ':' ' ' | sort | uniq` 
for file in ${=~classpath}(N) 
do 
    export CLASSPATH=$CLASSPATH:$file 
done 
相關問題