Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何清除NoClassDefFoundError_Java_Hadoop_Classpath - Fatal编程技术网

Java 如何清除NoClassDefFoundError

Java 如何清除NoClassDefFoundError,java,hadoop,classpath,Java,Hadoop,Classpath,在运行java程序将文件复制到hdfs时,我遇到以下异常 hduser@master:~/Desktop/Source Code$ java -cp . Filesize monis.txt /home/hduser/Desktop/Source*/monis.txt /tmp/user/gutenberg Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configurat

在运行java程序将文件复制到hdfs时,我遇到以下异常

hduser@master:~/Desktop/Source Code$ java -cp . Filesize monis.txt /home/hduser/Desktop/Source*/monis.txt /tmp/user/gutenberg



Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration
at FileSize.copyFromLocal(FileSize.java:219)
at FileSize.main(FileSize.java:74)
    Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.conf.Configuration
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 2 more
我已经在
/etc/environment
文件中定义了我的
类路径
变量,它看起来是这样的

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" 

CLASSPATH="/usr/local/hadoop/hadoop-core-1.0.4.jar:/usr/local/hadoop/lib/commons-cli-1.2.jar:/usr/local/hadoop/lib/commons-logging-1.1.1.jar:/usr/local/hadoop/lib/log4j-1.2.15.jar:/home/hduser/Desktop/Source*/"

但是我还是遇到了这个异常。

我会小心地将CLASSPATH环境变量和
-cp
标志混合到java中,这很可能会覆盖您在/etc/environment中设置的环境变量

您还应检查您对/etc/environment所做的更改是否生效:

#> echo $CLASSPATH
如果这没有显示您设置的值,那么您很可能需要重新启动shell会话,注销并再次登录,或者您可以直接获取文件源:

#> source /etc/environment
另一方面,运行与hadoop交互的程序的最佳方式是通过hadoop shell脚本。您需要将类绑定到一个jar文件中,然后调用程序就很容易了,让脚本负责将hadoop和其他库依赖项添加到类路径中:

#> /usr/local/hadoop/bin/hadoop myJar.jar \
      Filesize monis.txt \
      /home/hduser/Desktop/Source*/monis.txt \
      /tmp/user/gutenberg

确保上述文件所在的jar路径正确。这可能不是问题,但
/home/hduser/Desktop/Source*/
无效。我相信你想要
/home/hduser/Desktop/Source/*
@anuj balan!jar文件的所有路径都正确!@吉姆·加里森!该路径是有效的,我刚刚使用了通配符来表示源代码目录!您不使用hadoop脚本编写这个程序(以及为您处理类路径)有什么特别的原因吗。你能发布你目前是如何启动这个项目的吗@Chris White!你的旁注帮了我大忙,节省了我很多时间!现在我不需要关心类路径设置!非常感谢!