Пакет рестлета в osgi (bndtools) не запускается. Ошибка активатора com/sun/net/httpserver/HttpHandler
Я перехожу на bndtools некоторые плагины osgi, которые я создал и работал в стандартной среде Eclipse. Я добавил веб-консоль Felix и HTTP-сервис Jetty и обменял некоторые пакеты Equinox на эквиваленты Felix.
Когда я запускаю один конкретный пакет, для которого требуется org.restlet.jar, пакет разрешается, но не активируется. И вывод консоли:
____________________________ Добро пожаловать в Apache Felix Gogo
г! 2015-05-25 00:06:33.471: ИНФОРМАЦИЯ:oejs.Server:jetty-7.xy-SNAPSHOT 2015-05-25 00:06:33.545: ИНФОРМАЦИЯ:oejsh.ContextHandler: запущен oejsServletContextHandler{/,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
Я пробовал решения на основе других вопросов, а именно этот, который рекомендует установить свойство запуска org.osgi.framework.system.packages.extra = com.sun.net.httpserver
(предположительно в моем файле bndtools.bnd), и еще один, который предлагает активировать приложение Restlet с помощью слушателя фреймворка - но у меня это не сработало, и вывод на консоль был таким же.
Я все еще учусь, и я был бы признателен за любую помощь, ведущую к решению, или советы по любым методам или функциям, которые bndtools или Eclipse могли бы предложить, чтобы помочь мне отследить это до его причины.
Кстати, Felix Web Console работает как необходимый пакет для этого же плагина.
Вот моя конфигурация 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
1 ответ
Оказывается, что другие ответы на этот вопрос на stackru.com, такие как этот, были правильными, за исключением этого параметра -runproperties: org.osgi.framework.system.packages.extra = com.sun.net.httpserver
Не удалось достичь желаемого результата в конфигурации запуска bndtools. FAQ по bndtools предлагает следующее, что решило мою проблему:
Обратите внимание, что использование инструкции -runsystempackages эквивалентно установке свойства OSGi org.osgi.framework.system.packages.extra; однако лучше использовать -runsystempackages, потому что тогда решатель Требования к выполнению внутри Bndtools будет учитывать доступность этих пакетов во время разрешения.