java - Apache Sling/felix 中的 OSGi slf4j 日志记录

标签 java maven osgi slf4j sling

我正在尝试在 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>

Apache Sling Web Console / Bundle View

编辑 如果我注释掉 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/

相关文章:

Java如何使用可变参数方法和泛型返回类型实现接口(interface)

java - Maven 怎么可能构建不在我的项目中的类?

logging - 如何将 Maven 输出记录到文件而不隐藏控制台?

java - 需要第三方框架的 Multi-Tenancy 功能

java - 在 Java 中向 TreeSet 中的迭代器添加自定义方法

java - 如果在构建作业中设置了 MAVEN_OPTS,Hudson SonarPlugin 将失败

java - 将 Hibernate 与 OSGi 和 Maven 结合使用

spring - 无法将 osgi 服务 bean 公开为类而不是接口(interface)

java - 是否可以使用比 list 中指定的更新的 bundle 版本而不更改当前 bundle ?

java - 启动一个在父进程中存活的子进程