清单:
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...
为什么?
答案 0 :(得分:2)
它应该是“Bundle-Activator:start.MahjongActivator” - 你省略了包名。