0

嗨添加第三方库,我按照文章https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/adding-third-party-libraries-to-a-module#embedding-模块中的库。现在生成的包有一个 lib 目录,其中包含在 build.gradle 中配置的所有依赖项。当我部署捆绑包时,捆绑包的状态已安装。当我尝试启动捆绑包时,出现以下错误

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

对于我在 build.gradle 中配置的任何依赖 jar,这甚至都不是传递依赖,你能帮我解决这个问题吗?

4

2 回答 2

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
   } 
}
于 2017-10-03T16:31:11.470 回答
0

现在我可以开始我的捆绑包了。

当我们在 build.gradle 文件中配置依赖并进行 gradle 刷新时,gradle 会下载所有依赖项(包括传递依赖项)。问题在于这些传递依赖。Gradle 不会下载所有传递依赖项。它缺少几个 jars,我们必须在 build.gradle 中再次配置缺少的 jars 并进行 gradle 刷新。

寻找丢失的罐子:

在 build.gradle 中配置依赖项,进行 gradle 刷新和部署。转到 gogo shell 并检查捆绑包。现在捆绑包将被部署并处于已安装状态。尝试从 gogo shell 启动捆绑包。现在您将收到类似于 Unresolved requirement:Import-Package: com.poi.extractor google 软件包的错误,并尝试在 maven 存储库中找出相应的 jar。在 build.gradle 中配置新的 jar。继续相同的过程,直到捆绑包被激活。

于 2017-09-12T04:15:19.760 回答