Liferay 7中没有基本资源?

时间:2017-08-10 15:59:52

标签: liferay osgi liferay-dxp

我已经将Liferay 6.2中的portlet转换为Liferay 7的捆绑包。当我部署它时,由于缺少资源而无法加载:

$ blade sh diag 1084
diag 1084
org.mycompany.caasd.portal-ldap-sync [1084]
  Unresolved requirement: Import-Package: com.liferay.portal.kernel.service; 
version="[1.20.0,2.0.0)"

当我使用Felix Gogo shell查看可用内容时,我看不到任何内核包。这是一个我应该期待安装的软件包,安装自己,包含在我的软件包中,还是我只是没有正确地思考这个问题?

1 个答案:

答案 0 :(得分:0)

当您构建捆绑包时,bnd将

  • 检查您的类路径并检测包版本
  • 使用您在Import-Package
  • 中手动提供的任何版本

在您的情况下,它会以某种方式检测到com.liferay.portal.kernel.service包的版本为1.20.0。因此,它生成了“等于或大于当前版本但低于下一个主要版本”的范围,在您的情况下,该范围表示为[1.20.0,2.0.0)。这可能是因为你在claspath上有旧jar或者因为你有错误的Import-Package语句。

只要您使用或者使用在较新版本中添加/更改的功能,这可以编译得很好。但是在运行时,实际的包版本更高(类似2.32.1),因此它不符合您的要求。由于OSGi运行时无法解析您的包需求,因此该包处于“istalled”状态!

要解决这个问题,您有两个选择:

  • 在较旧的Liferay版本上安装您的软件包(其中com.liferay.portal.kernel.service软件包位于1.20.02.0.0之间)
  • 重新编译您的包,确保类路径只包含那些com.liferay.portal.kernel.service包具有版本的jar,这些jar将生成运行时包版本适合的版本范围。