OSGi找不到激活剂

时间:2011-02-10 01:41:49

标签: java osgi

清单:

Manifest-Version: 1.0
Bundle-Name: Mahjong
Bundle-Activator: MahjongActivator
Bundle-SymbolicName: Mahjong
Bundle-Version: 1.0.0
Import-Package: org.osgi.framework

编译&不和谐:

$ javac -classpath equinox.jar src/start/*java
$ jar -cfm Mahjong.jar MahjongManifest.mf src/start/*class

激活者:

package start;

import org.osgi.framework.*;

public class MahjongActivator implements BundleActivator
{
    public void start(BundleContext context)
    {
        System.out.println("Hi!");
    }
    public void stop(BundleContext context)
    {
        System.out.println("Bye!");
    }
}

然后我在OSGi中加载.jar,当我尝试start()时,它说:

org.osgi.framework.BundleException: The activator MahjongActivator for bundle Mahjong is invalid
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:156)
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:751)
        at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:370)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:284)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:276)
...
Caused by: java.lang.ClassNotFoundException: MahjongActivator
...
some more ClassNotFounds...

为什么?

1 个答案:

答案 0 :(得分:2)

它应该是“Bundle-Activator:start.MahjongActivator” - 你省略了包名。