簡體   English   中英

無法在Maven捆綁包中解析導入包

[英]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.

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