SpringMvc+Mybatis整合hbase时出现的问题

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.collect.MapMaker.keyEquivalence(Lcom/google/common/base/Equivalence;)Lcom/google/common/collect/MapMaker;
    at com.google.common.collect.Interners$WeakInterner.<init>(Interners.java:68)
    at com.google.common.collect.Interners$WeakInterner.<init>(Interners.java:66)
    at com.google.common.collect.Interners.newWeakInterner(Interners.java:63)
    at org.apache.hadoop.util.StringInterner.<clinit>(StringInterner.java:49)
    at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:2108)
    at org.apache.hadoop.conf.Configuration.loadResources(Configuration.java:2001)
    at org.apache.hadoop.conf.Configuration.getProps(Configuration.java:1918)
    at org.apache.hadoop.conf.Configuration.get(Configuration.java:721)
    at org.apache.hadoop.conf.Configuration.getTrimmed(Configuration.java:740)
    at org.apache.hadoop.conf.Configuration.getBoolean(Configuration.java:1093)
    at org.apache.hadoop.hbase.HBaseConfiguration.checkDefaultsVersion(HBaseConfiguration.java:66)
    at org.apache.hadoop.hbase.HBaseConfiguration.addHbaseResources(HBaseConfiguration.java:102)
    at org.apache.hadoop.hbase.HBaseConfiguration.create(HBaseConfiguration.java:113)

    at com.yitian.zhishang.utils.HbaseOperatorUtil.<clinit>(HbaseOperatorUtil.java:33)



以上错误是由于javaee6中的webservices-api-osgi.jar 和 guava12.0.1.jar(使用hbase需要用到的jar包)产生的冲突;
注意:这个错误是直接运行java程序引起的

解决的办法有如下几个方法:
1、在buildPath中删除对javaee6的引用

2、使用javaee5来代替javaee6

3、采用servlet来调用对hbase的操作(采用的是tomcat服务器)


产生以上错误的原因是jar包的加载顺序引起的:
(1)如果是直接运行一个java文件,jar包是先加载javaee6的,然后再加载用户自己添加进去的jar包

 (2)如果是采用tomcat,则tomcat是先加载用户导入的jar包,然后再加载javaee的


注意:
  在tomcat中,jar包的加载顺便可以自己在context.xml文件设置<Loader delegate="true" />

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值