Osgi hbase-default.xml文件似乎是针对旧版本的hbase(null),此版本为0.94.6-cdh4.3.0

Osgi hbase-default.xml文件似乎是针对旧版本的hbase(null),此版本为0.94.6-cdh4.3.0,osgi,hbase,Osgi,Hbase,我正在创建一个OSGi包,其中Sling servlet需要使用HBase。我得到以下错误。我在谷歌上搜索了一下,我发现答案很模糊,其中有些是矛盾的。我在本地主机上运行了HBase 0.94.6,必要的JAR是项目中的Maven依赖项。它们也包含在EmbeddeDependency标记中。我已尝试将hbase-default.xml包含在捆绑包的根目录中(即src/main/resources中),在maven捆绑包插件的配置/异常标记中,我有以下内容: <Include-Resource

我正在创建一个OSGi包,其中Sling servlet需要使用HBase。我得到以下错误。我在谷歌上搜索了一下,我发现答案很模糊,其中有些是矛盾的。我在本地主机上运行了HBase 0.94.6,必要的JAR是项目中的Maven依赖项。它们也包含在EmbeddeDependency标记中。我已尝试将hbase-default.xml包含在捆绑包的根目录中(即src/main/resources中),在maven捆绑包插件的配置/异常标记中,我有以下内容:

<Include-Resource>{maven-resources}</Include-Resource>

答案是我必须补充一点:

   Thread.currentThread().setContextClassLoader(HBaseConfiguration.class.getClassLoader());

这在另一个线程中提到过,但是有几个建议的解决方案。我很早就试过了,但当时没用。我可能需要重新启动Felix或者删除包之类的东西。无论如何,这最终解决了它。

这帮助我使用hbase 0.98.6.1修复了jruby中的相同问题。我的代码在本地测试/etc期间直接运行时工作,但在部署为gem时出现此错误。对于jruby,我使用了这一行:
java.lang.Thread.currentThread.setContextClassLoader(HBaseConfiguration.to_java.get_class.getClassLoader)
   Thread.currentThread().setContextClassLoader(HBaseConfiguration.class.getClassLoader());