list :
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...
为什么?
最佳答案
它应该是“Bundle-Activator: start.MahjongActivator”——您省略了包名称。
关于java - OSGi 找不到激活器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4952582/