有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在尝试在我的OSGi捆绑包中使用slf4j logger,用于Apache Sling

将依赖项和导入标记添加到POM时。xml,则捆绑包仍处于已解析状态

我少了什么吗

激活剂。班级

    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中删除导入。类服务保持在已解决状态。 一旦我在POM中删除了关于slf4的行,一切都正常了


共 (2) 个答案

  1. # 1 楼答案

    我想您的<Import-Package>org.slf4j</Import-Package>语句会阻止导入其他必需的包。该元素的值应该是org.slfj4.*,*,以便生成所有“自动”导入。有关更多信息,请参见maven-bundle-plugin docs

    但是,如果您的pom类似于slingbucks sample这样的Sling包,那么无论如何,您都不应该需要这样的显式导入语句

  2. # 2 楼答案

    也许你的激活器的启动方法有一个异常。添加一个try-catch并简单地将异常转储到系统上。出去看看发生了什么。您是否也安装了一些处理slf4j日志的包,比如pax日志