osgi(bndtools)中的Restlet包无法启动。激活器错误com/sun/net/httpserver/HttpHandler

osgi(bndtools)中的Restlet包无法启动。激活器错误com/sun/net/httpserver/HttpHandler,osgi,httphandler,restlet,bnd,bndtools,Osgi,Httphandler,Restlet,Bnd,Bndtools,我正在迁移到bndtools一些我已经创建并在标准Eclipse环境中工作的osgi插件。我添加了Felix Web控制台和Jetty HTTP服务,并用Felix等价物交换了一些Equinox捆绑包 当我运行一个需要org.restlet.jar的特定包时,该包将解析,但不会激活。控制台输出为: ____________________________欢迎来到ApacheFelixGogo g!2015-05-25 00:06:33.471:信息:oejs.服务器:jetty-7.x.y-SN

我正在迁移到bndtools一些我已经创建并在标准Eclipse环境中工作的osgi插件。我添加了Felix Web控制台和Jetty HTTP服务,并用Felix等价物交换了一些Equinox捆绑包

当我运行一个需要org.restlet.jar的特定包时,该包将解析,但不会激活。控制台输出为:

____________________________欢迎来到ApacheFelixGogo

g!2015-05-25 00:06:33.471:信息:oejs.服务器:jetty-7.x.y-SNAPSHOT 2015-05-25 00:06:33.545:信息:oejsh.ContextHandler:已启动 o、 e.j.s.ServletContextHandler{/,null}2015-05-25 00:06:33.620:信息:oejs.AbstractConnector:已启动 SelectChannelConnector@0.0.0.0:8080 ! 无法启动捆绑包 org.restlet-2.3.2.v20150501-1520,异常激活器错误 com/sun/net/httpserver/HttpHandler来自: org.restlet.engine.engine:registerDefaultConnectors#839

我尝试了基于其他问题的解决方案,即建议设置run属性
org.osgi.framework.system.packages.extra=com.sun.net.httpserver
(可能在我的bndtools.bnd文件中),以及另一个建议使用框架侦听器激活Restlet应用程序的解决方案,但这些都不适用于我,和控制台输出是相同的

我仍在学习中,我将非常感谢您对解决方案的任何帮助,或bndtools或Eclipse可能提供的任何方法或功能的提示,以帮助我追踪其原因

顺便说一句,FelixWebConsole正在工作,作为这个插件所需的捆绑包

以下是我的bndtools配置:

Bundle-Version: 0.0.0.${tstamp}
Service-Component:  \
    *
-runfw: org.apache.felix.framework;version='[4,5)'
-runee: JavaSE-1.7
-runsystemcapabilities: ${native_capability}

-resolve.effective: active;skip:="osgi.service"


-buildpath:  \
    osgi.core,\
    osgi.cmpn,\
    biz.aQute.bnd.annotation,\
    org.apache.felix.log,\
    com.fiscio.api;version=latest,\
    osgi.enterprise,\
    org.restlet,\
    org.restlet.ext.json,\
    org.json

-runbundles:  \
    com.fiscio.api;version=latest,\
    org.apache.felix.configadmin;version='[1.8.0,1.8.1)',\
    org.apache.felix.gogo.command;version='[0.14.0,0.14.1)',\
    org.apache.felix.gogo.runtime;version='[0.16.2,0.16.3)',\
    org.apache.felix.gogo.shell;version='[0.10.0,0.10.1)',\
    org.apache.felix.http.jetty;version='[2.2.2,2.2.3)',\
    org.apache.felix.log;version='[1.0.1,1.0.2)',\
    org.apache.felix.metatype;version='[1.0.10,1.0.11)',\
    org.apache.felix.scr;version='[1.8.2,1.8.3)',\
    org.apache.felix.webconsole;version='[4.2.2,4.2.3)',\
    org.json;version='[1.0.0,1.0.1)',\
    org.restlet;version='[2.3.2,2.3.3)',\
    org.restlet.ext.json;version='[2.3.2,2.3.3)',\
    osgi.cmpn;version='[5.0.0,5.0.1)',\
    osgi.enterprise;version='[4.2.0,4.2.1)'

-runrequires:  \
    osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.shell)',\
    osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.command)',\
    osgi.identity;filter:='(osgi.identity=org.apache.felix.webconsole)',\
    osgi.identity;filter:='(osgi.identity=org.apache.felix.configadmin)',\
    osgi.identity;filter:='(osgi.identity=org.apache.felix.metatype)',\
    osgi.identity;filter:='(osgi.identity=org.apache.felix.log)',\
    osgi.identity;filter:='(&(osgi.identity=osgi.cmpn)(version>=4.2))',\
    osgi.identity;filter:='(&(osgi.identity=org.apache.felix.scr)(version>=1.6.0))',\
    osgi.identity;filter:='(osgi.identity=org.apache.felix.http.jetty)',\
    osgi.identity;filter:='(osgi.identity=com.fiscio.api)',\
    osgi.identity;filter:='(osgi.identity=org.json)',\
    osgi.identity;filter:='(osgi.identity=org.restlet.ext.json)',\
    osgi.identity;filter:='(osgi.identity=org.restlet)'

## Uncomment if you need to change the HTTP port
-runproperties: org.osgi.framework.system.packages.extra = com.sun.net.httpserver

Private-Package:  \
    com.fiscio.rest,\
    com.fiscio.rest.resources

事实证明,stackoverflow.com上对此问题给出的其他答案(如)都是正确的,但该设置除外
-runproperties:org.osgi.framework.system.packages.extra=com.sun.net.httpserver
在bndtools启动配置中未达到预期结果。以下建议解决了我的问题:

请注意,使用-runsystempackages指令相当于 设置OSGi属性org.OSGi.framework.system.packages.extra; 但是最好使用-runsystempackages,因为 Bndtools中的需求解析器将考虑 解决期间这些包的可用性