私が作成し、標準の Eclipse 環境で動作していたいくつかの osgi プラグインをbndtoolsに移行しています。Felix Web ConsoleとJetty HTTP Serviceを追加し、いくつかのEquinoxバンドルをFelixの同等 のものと交換しました。
org.restlet.jarを必要とする 1 つの特定のバンドルを実行すると、バンドルは解決されますが、アクティブ化されません。コンソール出力は次のとおりです。
____________________________ Apache Felix Gogo へようこそ
グ!2015-05-25 00:06:33.471:INFO:oejs.Server:jetty-7.xy-SNAPSHOT 2015-05-25 00:06:33.545:INFO:oejsh.ContextHandler:開始 oejsServletContextHandler{/,null} 2015- 05-25 00:06:33.620:INFO:oejs.AbstractConnector:Started 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 プロパティ (おそらく私の bndtools .bnd ファイル) を設定することを推奨するこの質問と、フレームワーク リスナーを使用してRestletアプリケーションをアクティブ化することを提案する別の質問ですが、これらはうまくいきませんでした。私、そしてコンソール出力は同じでした。org.osgi.framework.system.packages.extra = com.sun.net.httpserver
私はまだ学んでいますが、解決策につながる助け、または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