我有 felix-framework-5.0.1
并且我正在尝试将 slf4j-api-1.6.0.jar
bundle 到 felix isgi 容器中。
在 felix 控制台中,我输入
install file:bundle/slf4j-api-1.6.0.jar
我收到一条消息
bundle ID:42
然后我尝试启动 bundle
start 42
我收到消息
org.osgi.framework.BundleException:无法解析 slf4j.api [42](R 42.0):缺少要求 [slf4j.api [42](R 42.0)] osgi.wiring.package; (&(osgi.wiring.p
ackage=org.slf4j.impl)(version>=1.5.5)) Unresolved 需求:[[slf4j.api [42](R 42.0)] osgi.wiring.package; (&(osgi.wiring.package=org.slf4j.impl)(版本>=
1.5.5))]
克!
有人可以帮助我吗?如何将 slf4j
bundle 到 felix 中?
最佳答案
slf4j-api 需要 org.slf4j.impl 包。这个包包含在每个 slf4j 实现中,例如 slf4j-simple、slf4j-logback 等。
实现包需要来自 API 工件的 org.slf4j 包。有一个交叉引用。这只能起作用,因为实现是 fragment bundles API 的。当实现与 API 一起安装时,它们将有一个公共(public)的类加载器,并且它们将一起解析。他们的两个要求都会得到满足。
简而言之:您必须选择其中一种实现并安装它。例如:slf4j-simple .
您应该使用相同版本的 API 和实现来满足他们的“交叉要求”。
关于java - 启动 slf4j 包无法在 felix 上启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31627427/