使用`' hadoop classpath`的-cp选项执行时无法加载类

时间:2014-08-28 19:13:08

标签: java hadoop classpath

我的问题非常接近这个,已经回答了。 Could not load class when executed with -cp option

然而,情况略有不同

$ 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:'。'然后,只需使用$ java -cp $ classpath GrabHDFSBlockInfo

1 个答案:

答案 0 :(得分:0)

hadoop classpath的一个已知问题是它包含通配符。结果,hadoop库无法正确加载。作为解决方法,尝试扩展通配符,将其替换为位于那里的jar序列。它很可能会有所帮助。

用于类似目的的一个小zsh脚本(虽然我只是在那里更新了现有的CLASSPATH):

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