java Eclipse OSGi SystemBundleActivator与BundleActivator
我有一个基于OSGi的(ApacheFelix)Eclipse项目。它取决于org.eclipse.osgi
。我一启动它,就会发生以下异常:
Auto-properties install: file:C:\programs\eclipse\plugins \org.eclipse.osgi_3.9.1.v20140110-1610.jar (java.lang.IllegalArgumentException: Start level must be greater than zero.)
java.lang.ClassCastException: org.eclipse.osgi.framework.internal.core.SystemBundleActivator cannot be cast to org.osgi.framework.BundleActivator
ERROR: Bundle org.eclipse.osgi [2] Error starting file:C:\programs\eclipse\plugins\org.eclipse.osgi_3.9.1.v20140110-1610.jar (org.osgi.framework.BundleException: Activator start error in bundle org.eclipse.osgi [2].)
at org.apache.felix.framework.Felix.createBundleActivator(Felix.java:4342)
at org.apache.felix.framework.Felix.activateBundle(Felix.java:2147)
at org.apache.felix.framework.Felix.startBundle(Felix.java:2070)
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1297)
at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:304)
at java.lang.Thread.run(Thread.java:744)
因此org.eclipse.osgi
包内部似乎存在问题。由于我无法更改捆绑包源代码,如何避免此错误
# 1 楼答案
组织。日食osgi本身就是一个osgi框架。我认为你不能在felix框架上运行它。所以如果你真的需要org的功能。日食osgi最好也将其用作osgi框架。那么它应该会更好
顺便说一句,您在这里面临的确切问题是,felix已经定义了BundleActivator接口,并将其导出为一个包。组织。日食osgi也嵌入了这个接口,并使用自己的版本。所以,真正的例外是SystemBundleActivator没有实现felix的BundleActivator接口