【问题标题】:BundleActivator methods not getting notified in OSGiBundleActivator 方法未在 OSGi 中得到通知
【发布时间】:2012-07-11 09:38:00
【问题描述】:

我创建了一个带有激活器的捆绑包。在启动我的包时,应该调用激活器方法,但它们不是。我已经按照教程中提到的方式实现了它。

package com.manning.sdmia;

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;


public class Activator implements BundleActivator { 
    private BundleContext context;

    public void start(BundleContext context) throws Exception {
        System.out.println("In bundle");
    }

    public void stop(BundleContext context) throws Exception {
        System.out.println("In stop");
    }
}

这是我的MANIFEST.MF 文件:

enter code here
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
Bundle-Name: Spring DM Hello World 
Bundle-SymbolicName: com.manning.sdmia.helloworld
Bundle-Version:1.0.0
Bundle-Activator: com.manning.sdmia.Activator
Export-Package:com.manning.sdmia
Import-Package: org.osgi.framework

现在,当我使用启动命令从 OSGI 提示符启动捆绑包时,System.out.println 应该在启动时被调用,但它没有打印任何内容。

【问题讨论】:

  • 到目前为止,我看不出您发布的内容有什么问题。您能否添加您在 shell 中键入的内容以及输出内容的详细信息?是否有任何错误消息?
  • 是的,请添加更多详细信息。你能验证捆绑包正在运行吗?
  • 是的。请添加更多细节。您是使用 IDE 来运行 OSGi 环境,还是只是通过控制台启动框架。顺便说一句,您使用哪个框架?
  • 在安装它时给我未知的捆绑名称而不是 com.manning.sdmia.helloworld 我从控制台说明我的框架并使用Equinox容器
  • 您是否查明您的具体问题是否是由清单文件引起的?我have a similar problem,如果您就这个问题提供反馈,我会很感兴趣。也许我的问题与你的重复。

标签: java osgi bundle


【解决方案1】:

如果您的清单看起来像是您在此处打印的,那么它不是正确的清单。删除第一行,并且标题名称前没有空格。

【讨论】:

  • 在安装时给我未知的捆绑名称而不是 com.manning.sdmia.helloworld。
  • 所以听起来你的清单被搞砸了......使用 bnd 生成它,让你免于这些东西
【解决方案2】:

我刚刚遇到了同样的问题,我通过将此行添加到清单文件中使其工作:

Bundle-ActivationPolicy: lazy

【讨论】:

    猜你喜欢
    • 2023-03-10
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 2013-04-12
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多