簡體   English   中英

maven-bundle-plugin創建意外的導入包內容

[英]maven-bundle-plugin Creates unexpected Import-Package content

我使用maven-bundle-plugin構建了所有捆綁maven-bundle-plugin並使用pax:provision進行了一些測試之后,我發現它正在所有捆綁軟件上以及在以下位置創建Import-Package=org.osgi.framework;version="[1.8,0)"在Felix中安裝捆綁軟件的那一刻,由於org.osgi.framework.BundleException: Unresolved constraint in bundle com.domain.mybundle [55]: Unable to resolve 55.0: missing requirement [55.0] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.8.0)(!(version>=2.0.0)))我無法解決所有org.osgi.framework.BundleException: Unresolved constraint in bundle com.domain.mybundle [55]: Unable to resolve 55.0: missing requirement [55.0] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.8.0)(!(version>=2.0.0))) org.osgi.framework.BundleException: Unresolved constraint in bundle com.domain.mybundle [55]: Unable to resolve 55.0: missing requirement [55.0] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.8.0)(!(version>=2.0.0)))

如果我沒有對該包的直接依賴,為什么maven-bundle-plugin創建此標頭。 我還嘗試添加依賴項:

<dependency>
  <groupId>org.apache.felix</groupId>
  <artifactId>org.apache.felix.framework</artifactId>
  <version>4.6.0</version>
</dependency>

並且它仍然使用版本1.8.0 知道為什么嗎?

UPDATE

再次檢查,捆綁包使用org.osgi.framework的活化劑。 但是這個類org.osgi.framework.BundleActivator來自捆綁包:

<dependency>
  <groupId>org.osgi</groupId>
  <artifactId>org.osgi.core</artifactId>
  <version>4.3.1</version>
  <scope>provided</scope>
  <optional>true</optional>
</dependency>

再說一遍,為什么maven-bundle-plugin使用版本4.3.1而不是1.8.0 在其他捆綁軟件中,它使用版本1.6.2

更新20-3-2015

這是我在執行mvn pax:provision后收到的異常

org.osgi.framework.BundleException: Unresolved constraint in bundle org.classdomain.per
sistence [47]: Unable to resolve 47.0: missing requirement[47.0] osgi.wiring.package; 
(&(osgi.wiring.package=org.osgi.framework)(version>=1.8.0)(!(version>=2.0.0)))ERROR: 
Bundle org.classdomain.persistence [47] Error starting file:bundles/org.classdomain.per
sistence_0.1.0.jar (org.osgi.framework.BundleException: Unresolved constraint in bundle
 org.classdomain.persistence [47]: Unable to resolve 47.0: missing requirement [47.0] o
sgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.8.0)(!(versio
n>=2.0.0))))

        at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4002)
        at org.apache.felix.framework.Felix.startBundle(Felix.java:2045)
        at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1299)
        at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:304)
        at java.lang.Thread.run(Thread.java:745)

當然,似乎只有在使用mvn pax:provision時才會發生此異常,如果我在獨立的Felix實例中安裝了相同的捆綁軟件,那么一切都會按預期進行。

Import-Package語句是根據您使用的庫中定義的程序包版本構建的。 在您的情況下,您有一個org.apache.felix.framework依賴項,它在清單中定義了這些導出(例如org.osgi.framework版本1.8)。

如果您僅依賴於org.osgi.core 4.3.1,則應使用1.6版定義軟件包org.osgi.framework。 所以這應該工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM