Hadoop / Hbase:java.lang.NoClassDefFoundError:org / apache / hadoop / hbase / HBaseConfiguration

时间:2016-04-29 15:02:40

标签: maven hadoop hbase

我安装了hadoop和Hbase,据我所知,两者都运行正常。当尝试使用hadoop构建的jar时,我得到了一个

java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration

错误,在我的maven依赖项中使用Hbase版本0.90.2。

我认为这是Hbase的旧版本,我不确定这个旧版本是否与hadoop 2.7.2甚至Java 8兼容。因此我尝试在我的maven依赖中使用Hbase版本0.99.2,但后来我得到一个

Failed to execute goal on project exercise_2: Could not resolve dependencies for project com.company.exercise_2:exercise_2:jar:1.0-SNAPSHOT: Failure to find org.apache.hbase:hbase:jar:0.99.2 in http://repo.maven.apache.org/maven2 was cached in the local repository
来自maven插件的

错误。我做错了什么?

这是我的pom.xml:

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-hdfs</artifactId>
    <version>2.7.2</version>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-mapreduce-client-core</artifactId>
    <version>2.7.2</version>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-common</artifactId>
    <version>2.7.2</version>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase</artifactId>
    <version>0.99.2</version>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-client</artifactId>
    <version>1.1.2</version>
    <scope>provided</scope>
</dependency>

1 个答案:

答案 0 :(得分:1)

似乎这是jar缓存问题,我认为HbaseConfiguration是常见的类,无论使用哪个版本的hbase。

您可以手动删除hbase的本地存储库文件并再次尝试mvn XXXX命令。

然后,Maven将尝试下载并修复类路径。

进行交叉检查,使用mvn ... -X选项查看它试图下载哪个版本的jar。

因为这个jar的范围是

  

提供

交叉检查群集中此jar的hbase版本。使用 hbase classpath 并检查此jar版本是否与您的pom.xml的maven存储库的jar文件版本紧密匹配。

应该修复。