[英]Import package can not be resolved in maven bundle
嘗試啟動捆綁包時出現問題。
項目結構:
--Main project
- sub project 1
- sub project 2
src/main/java/util
- sub project 3
- bundle project 1
- bundle project 2
- bundle project 3
當我在Eclipse中使用Maven install命令編譯主項目時,它已成功編譯。 因此,對於測試包,我已經下載了felix分發包。 我已成功安裝捆綁軟件,但無法啟動。 我得到錯誤依賴性無法解決,這是我的捆綁軟件pom文件
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<instructions>
<Export-Package>
com.test.sub_project_3.step,
com.test.sub_project_3.step2
</Export-Package>
<Import-Package>*
org.osgi.framework,
org.osgi.util.tracker,
com.test.sub_project_2.util
</Import-Package>
<Embed-Dependency>
slf4j-api;scope=compile
</Embed-Dependency>
<Bundle-Activator>com.test.sub_project_3.osgi.Activator</Bundle-Activator>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
我收到“ com.test.sub_project_2.util無法解決 ”的錯誤。 com.test.sub_project_2可以正確編譯並打包,它的名稱也正確,但是我仍然不明白為什么會出錯。
您必須了解OSGi和Maven是不同的工具,它們具有有關程序包解析的不同策略。 在設計時,將使用Maven策略。 您在POM文件中指出依賴關系。 此外,在您的情況下,您使用了maven bundle插件,因此您可以限制在運行時需要由您的軟件包導入哪個軟件包(“導入軟件包”部分)。 因此,在您的情況下,所有依賴項都在設計時出現,因為您的項目可以編譯。 但這並不意味着運行時解析將起作用,因為在運行時使用了OSGi解析。
在您的情況下,錯誤消息表明您部署的捆綁軟件在運行時無法找到com.test.sub_project_2.util以便執行。 這是因為OSGi發行版中沒有捆綁軟件提供該軟件包。 因此,您可以捆綁包含該軟件包的項目,並將其部署在OSGi發行版中。 如果這樣做,則該包現在可以在運行時使用。
您可以以一種簡單的方式將這種情況視為這種問題:用於捆綁軟件的類路徑在設計和運行時是不同的。 而且您不能假設它們之間存在因果關系。
問候
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.