如何让 Apache Curator 在 OSGi 包内工作?

How to get Apache Curator to work inside an OSGi bundle?

总的来说,我是 Zookeeper 和 Curator 的新手。
尝试使用 Curator 连接到 Zookeeper 并进行读写。 当从独立的 Java 应用程序执行时,这段代码工作正常,但当嵌入到 OSGi 包中时,它无法连接到 Zookeeper 服务器。

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;

CuratorFramework curator = CuratorFrameworkFactory.newClient(
    someConnectionString, retryPolicy);
curator.start();
try {
    // returns false from OSGi, but true from standalone application
    curator.getZookeeperClient().blockUntilConnectedOrTimedOut();
}
catch (InterruptedException e) { ... }

对于 OSGi 包,我在包内的 lib 文件夹中包含 curator-framework-2.9.0.jar、curator-client-2.9.0.jar 和其他依赖项。 我没有收到任何运行时错误,因此似乎已处理所有依赖项。

尝试搜索 Curator 库是否支持 OSGi 框架,我确实看到这个问题在 2013 年提出并标记为已解决。

我是不是漏掉了什么明显的东西?

原来是一个简单的导入缺失案例。然而,ClassNotFoundExceptions 并没有进入控制台,而是进入了 log4j。添加以下内容以初始化 log4j 显示缺少导入,如 org.ietf.jgss.

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;

BasicConfigurator.configure();
Logger.getRootLogger().setLevel(org.apache.log4j.Level.ALL);