これは、パッケージが Java でどのように機能するかを誤解しているように見えます。
パッケージは階層的に見えるかもしれませんが、階層化されていません。そのため、パッケージa.b.c.d.e
はいかなる意味でも「子」パッケージではありa.b.c
ません。これらは、名前が異なる 2 つの異なるパッケージです。
したがって、パッケージのクラスを使用した場合は、パッケージa.b.c.d.e
をインポートする必要がありますa.b.c.d.e
。あなたも輸入したかもしれないという事実a.b.c
は無関係です。
以下のコメント/チャットでの議論を要約するために更新します。
「パッケージ xyz は使用されていますが、マニフェストにインポートされていません」というエラーは、パッケージを に追加する必要があることを意味しImport-Package
ます。パッケージはネストされていないため、個々のパッケージをインポートする必要があることに注意してください。
そのパッケージを に追加するとImport-Package
解決エラーが発生する場合は、パッケージをエクスポートする既存のバンドルがないことを意味します。問題のパッケージを含むバンドルは、 にリストする必要がありますExport-Package
。
結果が "Bundle exports packages which are not in the bundle classpath" というエラー メッセージである場合は、エクスポートを含むバンドルの内容に実際にはパッケージが含まれていません。おそらく、export ステートメントを間違ったバンドルに追加したか、何らかの理由でバンドルの内容からパッケージが誤って省略された可能性があります。これが発生する理由は、使用しているビルド システムによって異なります。
最後に: クラスとパッケージを混同しないでください! パッケージは、OSGi でインポート/エクスポートするものです。パッケージがエクスポートまたはインポートされると、「内部クラス」を含む、そのパッケージ内のすべてのクラスに常に適用されます。