gpt4 book ai didi

java - 如何清除NoClassDefFoundError

转载 作者:行者123 更新时间:2023-12-01 14:42:33 28 4
gpt4 key购买 nike

在运行我的 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 文件中定义了我的 CLASSPATH 变量,它看起来像这样

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 session 、注销并再次登录,或者您可以直接获取文件:

#> 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

关于java - 如何清除NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15803456/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com