表现:
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/