2016-04-29 83 views
2

我已經安裝了hadoop和Hbase,兩者都工作正常,據我所知。當試圖與hadoop內置罐,我得到一個Hadoop/Hbase:java.lang.NoClassDefFoundError:org/apache/hadoop/hbase/HBaseConfiguration

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

看起來這是罐子緩存的問題,我認爲,無論使用哪個版本的HBase的HbaseConfiguration是普通班。

您可以手動刪除hbase的本地存儲庫文件,並再次嘗試mvn XXXX命令。

然後Maven會嘗試下載並修復類路徑。

用於交叉檢查,使用mvn ... -X選項查看試圖下載哪個版本的jar。

由於這個罐子的範圍

provided

跨羣集中檢查這個罐子的HBase的版本。通過使用hbase classpath並檢查此jar版本是否與您的pom.xml的maven存儲庫的jar文件版本緊密匹配。

這應該修復。

+0

謝謝你的回答。如何「手動刪除本地存儲庫文件」? – JoshJ

+0

maven在您的本地機器上有本地回購,例如.m2/repo –

+0

我正在使用IntelliJ與maven插件,我在Intellij的文件中找不到任何本地Maven回購。有沒有辦法做到這一點,雖然我使用插件? – JoshJ