2017-09-08 117 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 
    } 
}