我正在尝试在 OSGi 包中为 Apache Sling 使用 slf4j 记录器。
将依赖项和导入标记添加到 POM.xml 时, bundle 仍处于“已解决”状态。
我是不是少了什么?
Activator.class
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Activator implements BundleActivator {
...
private final Logger log = LoggerFactory.getLogger(SampleServiceImpl.class);
...
POM.xml
<Import-Package>org.slf4j</Import-Package>
...
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.6</version>
<scope>provided</scope>
</dependency>
编辑 如果我注释掉 Logger 实例化并从 Activator.class 中删除导入,则服务将保持已解决状态。 一旦我删除了 POM 中有关 slf4 的行,一切就正常了。
最佳答案
我想你的<Import-Package>org.slf4j</Import-Package>
语句阻止导入其他所需的包。该元素的值应该是 org.slfj4.*,*
以便生成所有“自动”导入。请参阅maven-bundle-plugin docs了解更多信息。
但是如果你的 pom 类似于 Sling 包,比如 slingbucks sample无论如何,你不应该需要这样显式的导入语句。
关于java - Apache Sling/felix 中的 OSGi slf4j 日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29181205/