我有一个基于OSGi(Apache Felix)的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
Bundle中似乎存在问题。由于我无法更改捆绑源代码,如何避免此错误?
答案 0 :(得分:2)
org.eclipse.osgi本身就是一个OSGi框架。我认为你不能在felix框架上运行它。因此,如果你真的需要org.eclipse.osgi的功能,那么最好将它作为OSGi框架使用。然后它应该更好。
顺便说一下。你在这里遇到的确切问题是felix已经定义了BundleActivator接口,并且导出就像打包一样。 org.eclipse.osgi也嵌入了这个接口,并使用自己的版本。所以Exception真正说的是SystemBundleActivator没有实现felix的BundleActivator接口。