我安装了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>
答案 0 :(得分:1)
似乎这是jar缓存问题,我认为HbaseConfiguration是常见的类,无论使用哪个版本的hbase。
您可以手动删除hbase的本地存储库文件并再次尝试mvn XXXX命令。
然后,Maven将尝试下载并修复类路径。进行交叉检查,使用mvn ... -X选项查看它试图下载哪个版本的jar。
因为这个jar的范围是
提供
交叉检查群集中此jar的hbase版本。使用 “hbase classpath
” 并检查此jar版本是否与您的pom.xml的maven存储库的jar文件版本紧密匹配。
应该修复。