您好,如果要添加第三方库,请按照文章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中配置的所有依赖项。 部署捆绑包时,会安装捆绑包的状态。当我尝试启动捆绑包时,我收到以下错误
org.osgi.framework.BundleException: Could not resolve module: com.test..api [564]
Unresolved requirement: Import-Package: com.ibm.wsdl.extensions.soap
这甚至不是我在build.gradle中配置的任何依赖jar的传递依赖 你能帮我解决这个问题。
答案 0 :(得分:0)
现在我可以开始捆绑了。
当我们在build.gradle文件中配置依赖项并执行gradle刷新时,gradle会下载所有依赖项(包括传递依赖项)。问题在于这些传递依赖性。 Gradle没有下载所有传递依赖项。它缺少几个罐子,我们必须在build.gradle中再次配置丢失的jar并进行gradle刷新。
找到丢失的罐子
在build.gradle中配置依赖项,执行gradle刷新和部署。
转到gogo shell并检查捆绑包。
现在捆绑包将部署并处于已安装状态。
尝试从gogo shell启动捆绑。
现在您将收到与Unresolved requirement:Import-Package: com.poi.extractor
类似的错误
谷歌包,并尝试找出maven存储库中相应的jar。
在build.gradle中配置新jar。
继续相同的过程,直到捆绑被激活。
答案 1 :(得分: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
}
}