Liferay 7中不可用的基础资源?
我已经从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)"
当我使用费利克斯·戈戈壳看看有什么可用的,我没有看到任何内核捆绑。这是我应该期待安装的捆绑软件,安装自己,包含在我的捆绑软件中,还是我没有考虑正确的方式?
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了解更多信息
当你建立你的包,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.service
包1.20.0
之间2.0.0
) - 重新编译你的包,确保classpath中只包含那些罐子其中
com.liferay.portal.kernel.service
软件包的版本将生成运行时软件包版本适用的版本范围。
这是一个很好的问题,我自己也想知道同样的事情。 – Yoshiya
没有证实,正如我在https://dev.liferay.com/develop/reference/-/knowledge_base/7-0/breaking-changes中看到的那样,这些子包存在,那么声明导入就像'com.liferay .portal.kernel.service。*',你能检查它是否是关于请求版本的问题吗? –