我的问题非常接近这个问题,已经回答了。
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在我的集群上变化不大。我最终通过设置带有扩展类路径填充':'的var来更改.bashrc。然后,只需使用$ java -cp $ classpath GrabHDFSBlockInfo

最佳答案

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

出于类似目的的一些zsh脚本(尽管我只是在那里更新了现有的CLASSPATH):

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

关于java - 使用 `' hadoop classpath的-cp选项执行时,无法加载类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25556354/

10-12 23:46