我已经将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查看可用内容时,我看不到任何内核包。这是一个我应该期待安装的软件包,安装自己,包含在我的软件包中,还是我只是没有正确地思考这个问题?
答案 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”状态!
要解决这个问题,您有两个选择:
com.liferay.portal.kernel.service
软件包位于1.20.0
和2.0.0
之间)com.liferay.portal.kernel.service
包具有版本的jar,这些jar将生成运行时包版本适合的版本范围。