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

来源:互联网 发布:怎么加入农村淘宝网 编辑:程序博客网 时间:2024/06/09 20:52
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" />

0 0