Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.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 Hadoop ClassNotFoundException_Java_Exception_Hadoop - Fatal编程技术网

Java Hadoop ClassNotFoundException

Java Hadoop ClassNotFoundException,java,exception,hadoop,Java,Exception,Hadoop,我正在编写我的第一个Hadoop应用程序,我遇到了一个错误。我不太明白这个堆栈跟踪中的一些细节是什么意思。这是一个ClassNotFoundException。我在UbuntuLinuxV12.10、Eclipse3.8.0、Java1.6.0\u24上构建这个。我通过从Apache站点下载Hadoop并使用Ant构建它来安装Hadoop 当我在创造工作时,我的崩溃发生在程序的第一行 public static void main(String[] args) throws IOExceptio

我正在编写我的第一个Hadoop应用程序,我遇到了一个错误。我不太明白这个堆栈跟踪中的一些细节是什么意思。这是一个
ClassNotFoundException
。我在UbuntuLinuxV12.10、Eclipse3.8.0、Java1.6.0\u24上构建这个。我通过从Apache站点下载Hadoop并使用Ant构建它来安装Hadoop

当我在创造工作时,我的崩溃发生在程序的第一行

public static void main(String[] args) throws IOException, InterruptedException,  ClassNotFoundException {

    Job job = new Job(); <<== crashing here.


Program [Java Application]  
com.sandbox.hadoop.Program at localhost:33878   
    Thread [main] (Suspended (exception ClassNotFoundException))    
        owns: Launcher$AppClassLoader  (id=29)  
        owns: Class<T> (org.apache.hadoop.security.UserGroupInformation) (id=25)    
        URLClassLoader$1.run() line: 217    
        AccessController.doPrivileged(PrivilegedExceptionAction<T>, AccessControlContext) line: not available [native method]   
        Launcher$AppClassLoader(URLClassLoader).findClass(String) line: 205 
        Launcher$AppClassLoader(ClassLoader).loadClass(String, boolean) line: 321   
        Launcher$AppClassLoader.loadClass(String, boolean) line: 294    
        Launcher$AppClassLoader(ClassLoader).loadClass(String) line: 266    
        DefaultMetricsSystem.<init>() line: 37  
        DefaultMetricsSystem.<clinit>() line: 34    
        UgiInstrumentation.create(Configuration) line: 51   
        UserGroupInformation.initialize(Configuration) line: 216    
        UserGroupInformation.ensureInitialized() line: 184  
        UserGroupInformation.isSecurityEnabled() line: 236  
        KerberosName.<clinit>() line: 79    
        UserGroupInformation.initialize(Configuration) line: 209    
        UserGroupInformation.ensureInitialized() line: 184  
        UserGroupInformation.isSecurityEnabled() line: 236  
        UserGroupInformation.getLoginUser() line: 477   
        UserGroupInformation.getCurrentUser() line: 463 
        Job(JobContext).<init>(Configuration, JobID) line: 80   
        Job.<init>(Configuration) line: 50  
        Job.<init>() line: 46   
        Program.main(String[]) line: 17 
/usr/lib/jvm/java-6-openjdk-amd64/bin/java (Jan 14, 2013 2:42:36 PM)    
publicstaticvoidmain(String[]args)抛出IOException、interruptedeexception、ClassNotFoundException{

Job Job=new Job();您应该添加在
/usr/lib/hadoop-0.xx/lib
中找到的所有JAR,以避免此类类路径问题

为了给您一个想法,您可以键入
hadoop类路径
,它将打印获取hadoop jar和所需库所需的类路径


在您的情况下,您缺少了
hadoop-common-0.xx.jar
,因此您应该将其添加到类路径中,然后就可以开始了。

您的主程序需要
org.apache.commons.configuration
还是应该是
org.apache.hadoop.conf.configuration

看起来Eclipse自动导入了错误的配置类,当hadoop在集群上运行时,该类不在类路径上


你能分享你的源代码吗,特别是
com.sandbox.hadoop.Program
类,
main
方法吗?

我也面临同样的问题。我通过将commons-configuration-x.x.jar添加到我的构建路径来解决它。它在$hadoop\u HOME/lib下。

原因很可能是因为找不到hadoop-core.jar。你正在运行吗来自Eclipse的作业?是的,我正在点击调试按钮以便逐步完成。我通过Package Explorer->Referenced Libraries->Build Path(rgt clk)->Configure Build Path->Java Build Path->Libraries添加了jar。我点击“添加外部jar”然后找到hadoop-core-1.1.1.jar并添加了它。这足够了吗?是的,应该足够了。但是再看看stacktrace,我认为关键原因是apache.commons.configuration的NotClassDefFoundException。这个jar与hadoop捆绑在一起(还有更多的.jar)。按照Charles的建议,尝试将这些JAR添加到您的建筑配置中(在我的例子中,JAR位于/usr/lib/share/hadoop)。你缺少依赖项,我在链接上发布了依赖项,你可以从那里复制。使用maven。是的,我只需要几个罐子。commons.lang、commons.configuration都不见了。由于我来自.NET环境,包名让我有点纠结。嗨,我知道这是一篇非常古老的帖子。希望你能帮助我!我我只导入了org.apache.hadoop.conf.conf,并且只想使用它。但是我仍然得到了错误:java.lang.NoClassDefFoundError:org/apache/commons/Configuration/Configuration。为什么会发生这种情况?我如何解决这个问题?
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/configuration/Configuration
at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.<init>(DefaultMetricsSystem.java:37)
at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.<clinit>(DefaultMetricsSystem.java:34)
at org.apache.hadoop.security.UgiInstrumentation.create(UgiInstrumentation.java:51)
at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:216)
at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:184)
at org.apache.hadoop.security.UserGroupInformation.isSecurityEnabled(UserGroupInformation.java:236)
at org.apache.hadoop.security.KerberosName.<clinit>(KerberosName.java:79)
at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:209)
at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:184)
at org.apache.hadoop.security.UserGroupInformation.isSecurityEnabled(UserGroupInformation.java:236)
at org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:477)
at org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:463)
at org.apache.hadoop.mapreduce.JobContext.<init>(JobContext.java:80)
at org.apache.hadoop.mapreduce.Job.<init>(Job.java:50)
at org.apache.hadoop.mapreduce.Job.<init>(Job.java:46)
at com.sandbox.hadoop.Program.main(Program.java:18)

Caused by: java.lang.ClassNotFoundException: org.apache.commons.configuration.Configuration
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
... 16 more