2017-09-08 145 views
0

您好爲添加第三方庫,我跟着文章https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/adding-third-party-libraries-to-a-module#embedding-libraries-in-a-module。 現在生成的bundle有一個lib目錄,其中包含在build.gradle中配置的所有依賴項。 當我部署捆綁軟件包時,捆綁軟件的狀態被安裝。當我嘗試啓動我提示以下錯誤:問題與捆綁外部依賴關係在Liferay Dxp捆綁

org.osgi.framework.BundleException: Could not resolve module: com.test..api [564] 
    Unresolved requirement: Import-Package: com.ibm.wsdl.extensions.soap 

這甚至不是任何我的依賴罐子,我在的build.gradle配置的傳遞依賴捆綁 能否請你幫我解決這個。

回答

0

現在我可以啓動我的包。

當我們在build.gradle文件中配置依賴關係並執行gradle刷新時,gradle會下載所有的依賴關係(包括傳遞依賴關係)。問題在於這些傳遞依賴。 Gradle並未下載所有傳遞依賴項。它缺少幾個罐子,我們必須在build.gradle中再次配置缺失的罐子,並進行gradle刷新。

工作四處尋找丟失的罐子:

配置的依賴關係的build.gradle,做一個刷新的gradle和部署。 轉到gogo shell並檢查捆綁。 現在該軟件包將被部署並將處於安裝狀態。 嘗試從gogo shell啓動該包。 現在您將收到類似於Unresolved requirement:Import-Package: com.poi.extractor 的錯誤,並嘗試在maven存儲庫中找到相應的jar。 在build.gradle中配置新的jar。 繼續相同的過程,直到捆綁包被激活。

0

在您的build.grade中添加以下腳本以將所有第三方依賴包括到您的OSGi模塊中,而不是一個接一個地手動添加它們。

bundle { 
def runtime = project.configurations.runtime 
runtime.resolve() 
instruction 'Bundle-ClassPath', '.' 
instruction 'Bundle-Activator', 'com.XXX.XXXXX.XXXX.ClassName' 
runtime.resolvedConfiguration.resolvedArtifacts.each { 
    def resrc = it.moduleVersion.id.name + '-' + 
      it.moduleVersion.id.version + '.jar'  
    instruction 'Bundle-ClassPath', 'META-INF/lib/' + resrc 
    instruction '-includeresource', 'META-INF/lib/' + resrc + '=' + it.file.path 
    } 
}