我想寫一個osgi bunlde,其中包括一個服務和serviceimpl類在兩個不同的包。 束服務和impl在一個單一的osgi包不開始
- packageA
- service class
- packageB
- service impl class
,因爲服務和服務實現了一套在同一個包,同時部署我得到一個缺少約束錯誤。
注意:如果我把服務和服務impl在不同的捆綁它工作正常。另外,如果我嘗試從packageB導入packageA,它工作正常。 由於兩者都在同一個包中,爲什麼我應該明確導入它。它背後的原因是什麼?
插件配置:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.5.3</version>
<extensions>true</extensions>
<executions>
<execution>
<id>manifest</id>
<phase>process-classes</phase>
<configuration>
<unpackBundle>true</unpackBundle>
<manifestLocation>META-INF</manifestLocation>
<instructions>
<Bundle-SymbolicName>${bundle.symbolicName}</Bundle-SymbolicName>
<Bundle-Version>0.2.0-SNAPSHOT</Bundle-Version>
<Export-Package>!${bundle.namespace}.internal.*,${bundle.namespace}.*;version="0.2.0-SNAPSHOT"</Export-Package>
<Private-Package>${bundle.namespace}.internal.*</Private-Package>
<_include>-osgi.bnd</_include>
<_donotcopy>CVS|.svn|.git|.nfs*|~.nfs*|^.nfs*</_donotcopy>
<Commit-Id>${buildNumber}</Commit-Id>
</instructions>
</configuration>
</execution>
</executions>
<configuration>
<unpackBundle>true</unpackBundle>
<manifestLocation>META-INF</manifestLocation>
<instructions>
<Bundle-SymbolicName>${bundle.symbolicName}</Bundle-SymbolicName>
<Bundle-Version>0.2.0-SNAPSHOT</Bundle-Version>
<Export-Package>!${bundle.namespace}.internal.*,${bundle.namespace}.*;version="0.2.0-SNAPSHOT"</Export-Package>
<Private-Package>${bundle.namespace}.internal.*</Private-Package>
<_include>-osgi.bnd</_include>
<_donotcopy>CVS|.svn|.git|.nfs*|~.nfs*|^.nfs*</_donotcopy>
<Commit-Id>${buildNumber}</Commit-Id>
</instructions>
</configuration>
</plugin>
在這裏,在運行時
你在說什麼進口。在java類中導入或在Manifest中導入? –
錯誤信息是什麼?我的意思是,如果你願意,我們可以猜測出了什麼問題,但這不太可能有幫助。 –
@Chris - >導入處於清單中。 – Shriram