問題タブ [bndtools]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
176 参照

java - 「オプションで必要な」バンドルを含めないように bndtools 解決に指示するにはどうすればよいですか?

私のアプリでは、サービス管理に Felix SCR を使用しています。ただし、SCR は 2 つのバンドル (1 つは推移的) をインポートします。そのうちの 1 つはorg.osgi.service.http、実行するたびに必要のない HTTP サーバーを開始します。

最終的な解決策から両方のバンドルを削除したいと考えています。どうすればいいですか?解決されているbndファイルの設定だと思いますか?

オプションのインポートを示す解決結果

0 投票する
2 に答える
104 参照

java - bndtools osgi プロジェクトで xml をデシリアライズできません

私はosgiとbndtoolsにかなり慣れていないので、bndtoolsチュートリアルから始めました

チュートリアルは正常に機能し、インターフェイスを実装する独自のテスト プロジェクトで遊んでみました。実装では、org.simpleframeworkを使用して xml ファイルを Java クラスに逆シリアル化しようとしています。

次の classnotfound 例外が発生します。また、実行しているバンドルのプライベートパッケージの一部として、パッケージ(問題のクラスが含まれている)を含めました

java.lang.ClassNotFoundException: packagename.classname at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java. net.URLClassLoader.findClass(不明なソース) at java.lang.ClassLoader.loadClass(不明なソース) at sun.misc.Launcher$AppClassLoader.loadClass(不明なソース) at java.lang.ClassLoader.loadClass(不明なソース) org. org.simpleframework.xml.strategy.TreeStrategy.readValue(TreeStrategy.java:163) の simpleframework.xml.strategy.Loader.load(Loader.java:50) org.simpleframework.xml.strategy.TreeStrategy.read(TreeStrategy. java:102) org.simpleframework.xml.core.Source.getOverride(Source.java:370) で org.simpleframework.xml.core.Factory.getConversion(Factory.java:207) org.simpleframework.xml.core.Factory.getOverride(Factory.java:139) で org.simpleframework.xml.core.ObjectFactory.getInstance(ObjectFactory.java:63) で org.simpleframework.xml.core.Composite .read(Composite.java:141) at org.simpleframework.xml.core.Composite.readVariable(Composite.java:687) at org.simpleframework.xml.core.Composite.readInstance(Composite.java:635) at org. org.simpleframework.xml.core.Composite.readElements(Composite. java:506) org.simpleframework.xml.core.Composite.readSection(Composite.java:388) で org.simpleframework.xml.core.Composite.read(Composite.java:367) で org.simpleframework.xml.core .Composite.read(Composite.java:234) org.simpleframework.xml.core.Composite.read(Composite.java:202) で org.simpleframework.xml.core.Composite.read(Composite.java:150) で org.simpleframework.xml.core.Traverser .read(Traverser.java:92) org.simpleframework.xml.core.CompositeList.populate(CompositeList.java:175) org.simpleframework.xml.core.CompositeList.read(CompositeList.java:148) org. org.simpleframework.xml.core.Composite.readUnion(Composite. java:610) org.simpleframework.xml.core.Composite.readElement(Composite.java:593) で org.simpleframework.xml.core.Composite.readElements(Composite.java:506) で org.simpleframework.xml.core .Composite.readSection(Composite.java:388) org.simpleframework.xml.core.Composite.read(Composite.java:367) で org.simpleframework.xml.core.Composite.readDefault(Composite.java:262) で org.simpleframework.xml.core.Composite .read(Composite.java:232) at org.simpleframework.xml.core.Composite.read(Composite.java:202) at org.simpleframework.xml.core.Composite.read(Composite.java:150) at org. org.simpleframework.xml.core.Composite.readUnion(Composite. java:610) org.simpleframework.xml.core.Composite.readElement(Composite.java:593) で org.simpleframework.xml.core.Composite.readElements(Composite.java:506) で org.simpleframework.xml.core .Composite.readSection(Composite.java:388) org.simpleframework.xml.core.Composite.read(Composite.java:367) で org.simpleframework.xml.core.Composite.readDefault(Composite.java:262) で org.simpleframework.xml.core.Composite .read(Composite.java:232) at org.simpleframework.xml.core.Composite.read(Composite.java:202) at org.simpleframework.xml.core.Composite.read(Composite.java:150) at org. org.simpleframework.xml.core.CompositeList.populate(CompositeList.java:175) の simpleframework.xml.core.Traverser.read(Traverser.java:92) org.simpleframework.xml.core.CompositeList.read(CompositeList. java:148) org.simpleframework.xml.core.Composite.readVariable(Composite.java:682) org.simpleframework.xml.core.Composite.readInstance(Composite.java:635) org.simpleframework.xml.core .Composite.readUnion(Composite.java:610) 組織で。org.simpleframework.xml.core.Composite.readSection(Composite. java:388) org.simpleframework.xml.core.Composite.read(Composite.java:367) で org.simpleframework.xml.core.Composite.readDefault(Composite.java:262) で org.simpleframework.xml.core .Composite.read(Composite.java:232) で org.simpleframework.xml.core.Composite.read(Composite.java:202) で org.simpleframework.xml.core.Composite.read(Composite.java:150) でorg.simpleframework.xml.core.Traverser.read(Traverser.java:92) at org.simpleframework.xml.core.Persister.read(Persister.java:632) at org.simpleframework.xml.core.Persister.read( Persister.java:613) (org.simpleframework.xml.core.Persister)。read(Persister.java:591) org.simpleframework.xml.core.Persister.read(Persister.java:550) at org.simpleframework.xml.core.Persister.read(Persister.java:528) at org.simpleframework .xml.core.Persister.read(Persister.java:433) で com.mlsm.implementation.MLSMImpl.parseMLSM(MLSMImpl.java:150) で com.mlsm.implementation.MLSMImpl.executeInternal(MLSMImpl.java:84) でcom.mlsm.implementation.MLSMImpl.parseAndExecute(MLSMImpl.java:182) で com.mlsm.implementation.MLSMImpl.start(MLSMImpl.java:65) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) で sun.reflect. org.apache.felix.dependencymanager.ServiceImpl.invoke(ServiceImpl.java:484) org.apache.felix.dependencymanager.ServiceImpl.activateService(ServiceImpl.java:441) で org.apache.felix.dependencymanager.ServiceImpl.access$000(ServiceImpl.java:44) で org.apache.felix. org.apache.felix.dependencymanager.SerialExecutor$1.run(SerialExecutor.java:47) でのdependencymanager.ServiceImpl$3.run(ServiceImpl.java:125) org.apache.felix.dependencymanager.SerialExecutor.scheduleNext(SerialExecutor.java: 84) org.apache.felix.dependencymanager.SerialExecutor.execute(SerialExecutor.java:68) で org.apache.felix.dependencymanager.ServiceImpl.calculateStateChanges(ServiceImpl.java:147) で org.apache.felix.dependencymanager.ServiceImpl org.apache.felix.dependencymanager.DependencyManager.add(DependencyManager.java:56) の .start(ServiceImpl.java:257) com.mlsm.implementation で。Activator.init(Activator.java:24) at org.apache.felix.dependencymanager.DependencyActivatorBase.start(DependencyActivatorBase.java:76) at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:645) org.apache.felix.framework.Felix.activateBundle(Felix.java:2152) で org.apache.felix.framework.Felix.startBundle(Felix.java:2070) で org.apache.felix.framework.BundleImpl.start で(BundleImpl.java:976) aQute.launcher.Launcher.update(Launcher.java:422) で aQute.launcher.Launcher.activate(Launcher.java:346) で aQute.launcher.Launcher.run(Launcher.java: 235) aQute.launcher.Launcher.main(Launcher.java:92) でorg.apache.felix.framework.Felix.activateBundle(Felix.java:2152) の SecureAction.startActivator(SecureAction.java:645) org.apache.felix.framework.Felix.startBundle(Felix.java:2070) の org .apache.felix.framework.BundleImpl.start(BundleImpl.java:976) at aQute.launcher.Launcher.update(Launcher.java:422) at aQute.launcher.Launcher.activate(Launcher.java:346) at aQute. launcher.Launcher.run(Launcher.java:235) at aQute.launcher.Launcher.main(Launcher.java:92)org.apache.felix.framework.Felix.activateBundle(Felix.java:2152) の SecureAction.startActivator(SecureAction.java:645) org.apache.felix.framework.Felix.startBundle(Felix.java:2070) の org .apache.felix.framework.BundleImpl.start(BundleImpl.java:976) at aQute.launcher.Launcher.update(Launcher.java:422) at aQute.launcher.Launcher.activate(Launcher.java:346) at aQute. launcher.Launcher.run(Launcher.java:235) at aQute.launcher.Launcher.main(Launcher.java:92)346) aQute.launcher.Launcher.run(Launcher.java:235) で aQute.launcher.Launcher.main(Launcher.java:92) で346) aQute.launcher.Launcher.run(Launcher.java:235) で aQute.launcher.Launcher.main(Launcher.java:92) で

これは、サービス start() で行うことです

もう 1 つ注意すべき点は、このコードは osgi フレームワークの外でも問題なく機能するということです。問題のデバッグに役立つ情報があれば教えてください。

私もこの投稿を読みましたが、目前の問題についてまだ混乱しています。

編集:だから、これはxmlに次のような要素がある場合にのみ発生することがわかりました

何か案は?

ありがとう

0 投票する
0 に答える
63 参照

osgi - bndtools osgi プロジェクトを別のマシン\コンピューターに移動できません

ワークスペースに 2 つの bndtools プロジェクト (1 つはインターフェイス、もう 1 つは実装) があります。

これらのプロジェクトの両方を別のマシン\コンピューターのワークスペースに移動する最良の方法は何ですか? 直接コピーペーストが機能しないことは理解していますが、1
.プロジェクトをコピーペーストしようとしました-機能しませんでした
2.Eclipseからプロジェクトをインポートしようとしました-機能しませんでした

0 投票する
1 に答える
3752 参照

apache-felix - OSGi と推移的な依存関係

OSGi プロジェクトに Felix Framework を使用していますが、サードパーティの依存関係に関する深刻な問題に遭遇しました。

eclipse と maven-bundle-plugin を使用して、ソースからバンドルを生成し、POM.XML ファイルから MANIFEST.MF を生成しています。ここまでは順調ですね。ただし、バンドルにサードパーティの依存関係がある場合、通常はバンドルではない JAR の無限のリストを探し、依存関係がなくなるまでそれらを /bundle Felix ディレクトリに配置します。

私はこのプロセスを「OSGi アプリケーションが機能するようにインターネットをダウンロードする」と呼んでいます。

私は何を間違っていますか?確かに、私は何か非常に間違ったことをしているに違いありません。なぜなら、B に依存するバンドル A を持ち、それが C と D に依存し、その 2 つが他のいくつかに依存するなどということは想像できないからです。これらの依存関係はすべて、Google または Maven Central を使用して手動で行います。それは正気じゃない!

これを自動化する正しい方法は何ですか? 私は2つの解決策のいずれかを持ちたいと思っています:

1)すべての依存関係が埋め込まれた大規模なJARファイルを作成できますが、必要なパッケージのみをエクスポートし、もちろんパッケージをインポートしません。

2) (私の推奨する解決策) すべての依存関係を個別の JAR ファイルにまとめて、/bundle ディレクトリに簡単に貼り付けることができます。

3) (さらに望ましい) プロジェクトに 8GB の依存関係をダウンロードせずにサードパーティの JAR を使用する方法があること。

これを行うツールを見つけましたが、直接 (1 次) の依存関係のみを対象としており、推移的な依存関係を手動で解決する必要があります。

この問題は重大です。このようなツールがないことが、OSGi の使用を妨げています。検索して検索して検索し、PAX、bndtools、フレンズなど 101 のソリューションすべてに出くわしましたが、この問題は解決していないようです…</p>

私を助けてください。可能であれば、生きた例を提供してください。私のような世界中の人々が、この問題の解決策から恩恵を受けるでしょう。

ありがとう!

-

-

編集: JScience を使用しようとしているサンプル プロジェクトを添付していますが、結果の JAR バンドルは新しいインポートを要求し続けます。つまり、自己完結型ではありません。

例へのリンク: https://www.dropbox.com/s/svo3nu3vawvv2xn/RequireJscienceExample.zip?dl=0

私は通常、Eclipseを使用してサードパーティのJARをバンドルに変換しようとしますが、常に私が持っていないパッケージをインポートする必要があるため、あなたが述べたように終わりのない状況です.

maven-bundle-plugin の Conditional_Package タグに関するドキュメントは見つかりませんでした。ただし、関連する検索では、以前に試したインライン オプションが表示されますが、成功しませんでした。

JScience ライブラリを使用して 1 つのクラスを持つ基本的なプロジェクトを作成しました。その POM.XML には次のものがあります。

私は、osgi フレームワーク自体からのものではないすべてのパッケージをインライン化することを Maven と言っています。結果の JAR を見ると、かなり良さそうです。JAR 全体ではなく、パッケージのみを埋め込んでいます (ただし、2 つしか使用していないため、これらのインライン パッケージはすべて必要ではないように見えます)。さらに、MANIFEST.MF ファイルを開くと、次の問題のある行が表示されます。

org.joda.convert と org.xml.sax がないと言っています。

私が驚いたのは、OSGi と互換性があると述べているライブラリ (JScience) について話していることです: http://jscience.org/

私は何が欠けていますか?JScienceを使わないわけにはいきません。また、OSGi サードパーティの統合が困難なため、開発時間を節約できるサードパーティのライブラリをいくつか拒否したことがあります。