在Gradle中增加了依赖性,Liferay说"Unresolved requirement: Import-Package"



我写了一个Liferay模块并成功部署了它。

然后我在build.gradledependencies部分添加了这一行:

compileOnly group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.3'

运行./gradlew eclipse后,我可以毫无问题地在 Eclipse 中使用库。但部署失败:

12:29:35,454 WARN  [fileinstall-/home/nico/liferay/osgi/modules][org_apache_felix_fileinstall:103] Error while starting bundle: file:/home/nico/liferay-dxp-digital-enterprise-7.0-sp3/osgi/modules/de.nico.mymodule-1.0.0.jar 
org.osgi.framework.BundleException: Could not resolve module: de.nico.mymodule [1085]_  Unresolved requirement: Import-Package: org.apache.http; version="4.5.3"_ [Sanitized]
at org.eclipse.osgi.container.Module.start(Module.java:429)
at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:402)
at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1253)
at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1225)
at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:512)
at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:361)
at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:312)

我不知道为什么它在寻找org.apache.http而不是org.apache.httpcomponents.

这是我的bnd.bnd

Bundle-SymbolicName: de.nico.mymodule
Bundle-Version: 1.0.0
Liferay-Require-SchemaVersion: 1.0.0

如何调查这个问题?
我不想手动下载/添加 JAR。

in your bnd.bnd

添加此代码..

Import-Package:
!org.apache.*,

*

进一步的调查将从异常消息开始。它说运行时不存在以下要求:

Import-Package: org.apache.http; version="4.5.3">

我假设它是以下之一:

  • 您没有将httpcomponents(或您需要的版本..请参阅语义版本控制(库部署到Liferay(编译工作,而部署失败(
  • httpcomponents可能不会打包为OSGi捆绑包。在这种情况下,您必须决定如何使代码可用。更多信息的良好起点是官方文档(感谢Andrea,从评论中推广这一点(和David Nebinger的博客文章

如何将这些依赖项添加到Liferay的运行时取决于您。如果依赖项是 OSGi 捆绑包,则可以直接下载和部署它们。如果它们不是 OSGi 捆绑包,请按照链接文章中描述的技术之一进行操作。

相关内容

最新更新