Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse OSGi SystemBundleActivator与BundleActivator_Java_Eclipse_Osgi_Apache Felix - Fatal编程技术网

Java Eclipse OSGi SystemBundleActivator与BundleActivator

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

我有一个基于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
包中似乎存在问题。由于我无法更改捆绑包源代码,如何避免此错误?

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。