我的问题非常接近这个,已经回答了。 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
答案 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