java.lang.ClassNotFoundException:org.apache.hadoop.conf.Configuration

时间:2015-03-17 06:49:35

标签: java hadoop filesystems

我一直收到这个错误。我已经在类路径中包含了hadoop commons和核心库,但我仍然会收到此错误.Help会受到高度赞赏

3 个答案:

答案 0 :(得分:11)

以下是如何进行故障排除:查看正在执行的jar内部以查看该类文件是否确实存在:

jar tvf target/my-jar-with-dependencies.jar | grep hadoop/conf/Configuration.class

如果不是,则需要将其添加到类路径中或更改jar的打包方式。

您使用的是Maven还是一些类似的构建工具?你可能有一个'范围'的依赖,这意味着它只会在某些情况下被编译到你的jar中。

    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>${hadoop.version}</version>
        <scope>provided</scope>
    </dependency>

在此示例中,scope标记告诉Maven您正在使用此依赖项进行构建,但它表示将在运行时提供依赖项,因此您需要删除此标记或使用hadoop jar添加运行时期间-cp=/path/to/jar.jar。像这样的范围的另一个例子是'test',它表示在单元测试期间只需要路径中的jar。

答案 1 :(得分:0)

确保jar中的类路径。您可以像标记所说的那样检查它;

jar tvf target/my-jar-with-dependencies.jar | grep hadoop/conf/Configuration.class

答案 2 :(得分:-1)

将依赖项添加到hadoop-core