表现:

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!");
    }
}


然后我将.jar加载到OSGi中,当我尝试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...


为什么?

最佳答案

它应该是“ Bundle-Activator:start.MahjongActivator”-您已省略软件包名称。

关于java - OSGi找不到激活器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4952582/

10-09 05:39