2014-01-19 4 views
8

をバージョン2.3.5からバージョン2.4.0に更新した後、mvn clean installはいくつかの警告メッセージを出力します。例えば。Maven Bundle Plugin:エクスポートはプライベートリファレンスを持っています

Export ch.entwine.weblounge.contentrepository.impl.index, has 1, private references [org.elasticsearch.action.bulk]

私はこれが埋め込みLIB(elasticsearch)とは何かを持っていると思います。ここにPOMの一部があります:

<dependencies> 
    ... 
    <dependency> 
    <groupId>org.elasticsearch</groupId> 
    <artifactId>elasticsearch</artifactId> 
    <version>0.19.9</version> 
    </dependency> 
    ... 
</dependencies 
... 
<Export-Package> 
    ... 
    ch.entwine.weblounge.contentrepository.impl.index 
    ... 
</Export-Package> 
<Embed-Dependency> 
    .... 
    elasticsearch;inline=true 
    ... 
</Embed-Dependency> 

エラーメッセージはどういう意味ですか? このような問題を解決するために推奨される方法は何ですか?

答えて

10

このメッセージは、(エクスポートしている)パブリックパッケージのうち、プライベートパッケージ(エクスポートされていないパッケージ)にあるクラスにアクセスしているクラスがあることを意味します。

jarを組み込むときは、組み込みjarからパッケージを宣言するためにExport-Packageを使用しないでください。あなた自身のバンドルからパッケージを宣言するのです。 org.elasticsearch.action.bulkをエクスポートするには、< _exportcontents>を使用する必要があります。

+0

あなたの答えをありがとう、それは動作します!しかし、私はいつも、埋め込まれた依存関係のパッケージをエクスポートしないでください(バンドルAPIの一部ではない)。これは間違っていますか? – Basil

+0

まあ、それは依存しています...もしあなたがjarファイルをバンドルとして持っているのであれば、それはバンドルとして存在しないので、 "提供されている"ようにスコープを設定することはできません。パブリックメソッドに必要なクラスを含むすべてのパッケージをエクスポートするのが最も良い方法です。このメッセージは通常、将来のクラスローディングの問題を示しています... – Cristiano

関連する問題