Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Liferay 7中没有基本资源?_Liferay_Osgi_Liferay Dxp - Fatal编程技术网

Liferay 7中没有基本资源?

Liferay 7中没有基本资源?,liferay,osgi,liferay-dxp,Liferay,Osgi,Liferay Dxp,我已经将portlet从Liferay 6.2转换为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)" 当我使用Feli

我已经将portlet从Liferay 6.2转换为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查看可用的内核包时,我没有看到任何内核包。这是一个我应该安装、自己安装、包含在我的捆绑包中的捆绑包,还是我没有正确地考虑这个问题?

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

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


有关更多信息,请参阅文档

当您构建捆绑包时,bnd将

  • 检查类路径并为您检测包版本
  • 使用您在导入包中手动提供的任何版本
在您的例子中,它不知何故检测到
com.liferay.portal.kernel.service
包的版本是
1.20.0
。因此,它生成了“等于或大于当前版本但低于下一个主要版本”的范围,在您的情况下,该范围表示为
[1.20.0,2.0.0)
。这可能是因为您在CLAPATH或BEHAW上使用了旧jar,因为您使用了错误的
导入包
语句

只要您不使用在较新版本中添加/更改的功能,这可能可以正常编译。但在运行时,实际的软件包版本更高(如
2.32.1
),因此它不满足您的要求。由于OSGi运行时无法解决您的捆绑包要求,因此捆绑包保留在“istalled”中国家

要解决此问题,您有两个选项:

  • 在旧版本的Liferay上安装您的捆绑包(其中
    com.Liferay.portal.kernel.service
    包介于
    1.20.0
    2.0.0
    之间)
  • 重新编译包,确保类路径仅包含那些jar,其中
    com.liferay.portal.kernel.service
    包的版本将生成运行时包版本适合的版本范围

这是一个很好的问题,我自己也在想同样的问题。我还没有确认,正如我在中看到的,子包存在,那么将导入声明为“com.liferay.portal.kernel.service.*”怎么样,您能检查一下请求的版本是否有问题吗?