2012-12-02 66 views
0

导入问题,我想在这里运行中发现的例子:http://thysmichels.com/2012/01/31/java-based-hdfs-api-tutorial/与HDFS的Java API

但是,当我去编译Java程序中,我得到的错误,说包不存在如。

error: package org.apache.hadoop.conf does not exist 
import org.apache.hadoop.conf.Configuration; 

Hadoop 1.0.4安装并正常工作。我看过的每一个处理hdfs的教程都只是从我之前提供的链接开始,他们不会谈论我需要的任何特殊先决条件。所以我想知道我需要做什么来做这个编译?我假设我需要编辑我的类路径以指向适当的包,但我不知道它们的位置。

而且我是一个单节点集群上运行的Ubuntu 12.04,Hadoop的1.0.4以下这些指令:http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/

+2

你是如何编译程序的? (Ant,Maven,IDE,命令行?)。如果hadoop-core jar不在类路径中,你会得到这个错误 –

+0

只是命令行 – user1443362

+0

你能发布你用来编译代码的确切命令行吗(编辑你的问题而不是psot它作为注释) –

回答

1

我建议你刷上一些基本的Java编译基础知识。

您需要做的不仅仅是一个javac HDFSExample.java - 因为您需要在类路径中包含一些依赖关系jar。更类似于javac -cp hadoop-core-1.0.4.jar HDFSExample.java

就个人而言,我建议您研究一下使用构建工具(如Maven,Ant)或IDE,因为当您开始将代码组织到包中并依赖于它时,这会让事情变得更加痛苦多个外部库。

EDIT:例如,行家配置是非常简单(好的,我不包括其他一些锅炉板POM decalarations的..):

<dependencies> 
    <dependency> 
     <groupId>org.apache.hadoop</groupId> 
     <artifactId>hadoop-core</artifactId> 
     <version>1.0.4</version> 
     <scope>provided</scope> 
    </dependency> 
<dependency> 

然后编译成罐:

#> mvn jar 
+0

实际上,我只是改变了我的类路径包括hadoop核心文件,而不是做它在命令行中。我问这个问题的原因是,你会告诉我什么文件实际上保存了这些导入的特定文件,而不是因为我不知道如何链接到外部依赖项。 现在的问题是,当它运行时,我得到一个错误:“线程中的异常”main“java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory”。我再次假设这是一个类路径问题,所以如果你碰巧知道什么jar包含LogFactory它将不胜感激。 – user1443362

+0

commons-logging,但认真研究maven - 你只是指定了hadoop-core的依赖关系,它会发现hadoop依赖的其他东西 –