Java 使用“-'”的-cp选项执行时无法加载类;hadoop类路径`

Java 使用“-'”的-cp选项执行时无法加载类;hadoop类路径`,java,hadoop,classpath,Java,Hadoop,Classpath,我的问题与这个问题非常接近,这个问题已经得到了回答。 然而,情况略有不同 $ javac -cp `hadoop classpath` GrabHDFSBlockInfo.java $ java -cp `hadoop classpath` GrabHDFSBlockInfo Error: Could not find or load main class GrabHDFSBlockInfo $ ls GrabHDFSBlockInfo* GrabHDFSBlockInfo.class

我的问题与这个问题非常接近,这个问题已经得到了回答。

然而,情况略有不同

$ 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类路径的快捷方式

非常感谢你的帮助

德迈



编辑:谢谢大家的帮助。因为hadoop类路径在我的集群上没有太大变化。我最终改变了我的.bashrc,通过设置一个带有扩展类路径填充“:.”的var,然后使用$java-cp$classpath GrabHDFSBlockInfohadoop类路径的一个已知问题是它包含通配符。因此,无法正确加载hadoop库。作为一种解决方法,尝试扩展通配符,用位于其中的JAR序列替换它们。这很可能会有帮助

一个类似用途的小zsh脚本(尽管我只是更新了现有的类路径):


您的类在包中吗?不,它只是一个简单的客户端代码。我将它编译到同一个目录中的.class。
classpath=`hadoop classpath | tr ':' ' ' | sort | uniq`
for file in ${=~classpath}(N)
do
  export CLASSPATH=$CLASSPATH:$file
done