Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在卡拉夫的OSGI中使用@Activate注释_Java_Osgi_Apache Karaf - Fatal编程技术网

Java 在卡拉夫的OSGI中使用@Activate注释

Java 在卡拉夫的OSGI中使用@Activate注释,java,osgi,apache-karaf,Java,Osgi,Apache Karaf,我正在尝试在我的全新捆绑包中设置一个函数,该函数在Apache Karaf容器启动时触发一次 捆绑包中的主类如下所示: @Component(service = BrandNewBundle.class) public class BrandNewBundle { .... @Activate protected void activate(ComponentContext myComponentContext) { LOG.info("Brand ne

我正在尝试在我的全新捆绑包中设置一个函数,该函数在Apache Karaf容器启动时触发一次

捆绑包中的主类如下所示:

@Component(service = BrandNewBundle.class)
public class BrandNewBundle {

    ....
    @Activate
    protected void activate(ComponentContext myComponentContext) {
        LOG.info("Brand new bundle started.");
    }
}
在karaf控制台中,我看到bundle状态为Active。但是在日志中,我没有看到我试图记录的消息

一些信息:

这是一个专业的建造 osgi.cmpn和slf4j api是我在pom.xml中的依赖项,到目前为止没有其他依赖项。 此文件中没有bnd.bnd文件 我读了这一页。与上面提到的不同,我的OSGI-INF/…xml是自动生成的。我不知道如何进一步调试


总之,问题是,如何真正触发我的激活功能?

这可能是卡拉夫的经典问题。您需要安装scr功能

feature:install scr

这可能是卡拉夫的经典问题。您需要安装scr功能

feature:install scr
组件注释也必须具有immediate=true。我加了这个,激活功能在卡拉夫启动时被触发

@Component(
    immediate=tue,
    service = BrandNewBundle.class
)
组件注释也必须具有immediate=true。我加了这个,激活功能在卡拉夫启动时被触发

@Component(
    immediate=tue,
    service = BrandNewBundle.class
)