Java Eclipse OSGi SystemBundleActivator与BundleActivator
我有一个基于OSGi的(ApacheFelix)Eclipse项目。它取决于Java Eclipse OSGi SystemBundleActivator与BundleActivator,java,eclipse,osgi,apache-felix,Java,Eclipse,Osgi,Apache Felix,我有一个基于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.) j
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
包中似乎存在问题。由于我无法更改捆绑包源代码,如何避免此错误?org.eclipse.osgi本身就是一个osgi框架。我认为您不能在felix框架上运行它。因此,如果您确实需要org.eclipse.osgi中的功能,最好将其用作osgi框架。那么它应该会工作得更好
顺便说一句,您在这里面临的确切问题是felix已经定义了BundleActivator接口,并且导出为一个包。org.eclipse.osgi也嵌入了这个接口,并使用自己的版本。因此,真正的例外是SystemBundleActivator没有实现felix的BundleActivator接口。我同意,如果有人依赖Equinox,他们可能需要在Equinox中运行。在某些情况下,您可以使用Equinox补充包(org.eclipse.Equinox.Supplement)在另一个框架(如Felix)下运行此类代码。该捆绑包导出Equinox作为框架时通常导出的各种API。