2017-08-10 75 views
3

我已经从Liferay的6.2门户转变为Liferay的7捆当我部署它,它不能加载由于缺少资源,: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)" 

当我使用费利克斯·戈戈壳看看有什么可用的,我没有看到任何内核捆绑。这是我应该期待安装的捆绑软件,安装自己,包含在我的捆绑软件中,还是我没有考虑正确的方式?

+0

这是一个很好的问题,我自己也想知道同样的事情。 – Yoshiya

+0

没有证实,正如我在https://dev.liferay.com/develop/reference/-/knowledge_base/7-0/breaking-changes中看到的那样,这些子包存在,那么声明导入就像'com.liferay .portal.kernel.service。*',你能检查它是否是关于请求版本的问题吗? –

回答

1

CE GA4的com.liferay.portal.kernel版本是2.32.1。所以,如果你是为CEGA4发展,具有gradle这个项目,你会配置项目的build.gradle依赖这样的:

dependencies { 
compileOnly group: "com.liferay.portal", name: "com.liferay.portal.kernel", version: "2.32.1" 
} 

您可以找到这通过查看portal-kernel.jar文件的MANIFEST/MANIFEST.MF或者如果你有Liferay的src为您的版本,在任何自己的模块build.gradle文件中。在我的tomcat包中,portal-kernel.jar如果在tomcat/lib/ext

除非我误解了你的问题,否则应该得到你想要的。

请参阅该文档here了解更多信息

0

当你建立你的包,BND要么

  • 检查你的classpath和检测软件包版本为你
  • 使用任何版本的手动提供Import-Package

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

只要您不在使用在新版本中添加/更改的功能,这可能编译得很好。但在运行时,实际的软件包版本更高(类似2.32.1),因此不符合您的要求。由于OSGi运行时无法解决您的捆绑需求,捆绑包将保持“istalled”状态!

要解决,你有两种选择:

  • 在旧的Liferay版本的安装捆绑软件(其中com.liferay.portal.kernel.service1.20.0之间2.0.0
  • 重新编译你的包,确保classpath中只包含那些罐子其中com.liferay.portal.kernel.service软件包的版本将生成运行时软件包版本适用的版本范围。