Apache Felix を使用して組み込み OSGi ホスト アプリケーションを作成しています。次のコードを使用して、公開したいパッケージを公開しています。
List<String> extra = new ArrayList<>();
extra.add("some.example.packag.to.expose.1");
extra.add("some.example.packag.to.expose.2");
extra.add("some.example.packag.to.expose.3");
config.put(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA, extra.toString().replace("[","").replace("]", ""));
すべてがうまく機能し、これらのパッケージが公開されています。ただし、依存関係を宣言したすべてのホスト プロジェクトにアクセスするには、バンドルが必要です。たとえば、親アプリケーションには Jackson、Apache (さまざま) などが宣言されており、これらにアクセスするにはバンドルが必要です。
パッケージを明示的に追加しようとしましたが、依存関係がある場合はうまくいかないようです。たとえば、バンドルで Jacksons を使用したいcom.fasterxml.jackson.core.type.TypeReference;
ので、上記の EXTRA リストに追加com.fasterxml.jackson.core.type
しましたが、問題が解決しないようです。パッケージはまだ公開されていません。
完璧な作業では、すべてのホストの依存関係を、それぞれを明示的に述べることなく利用できるようにしたいだけです。