1

我正在为 Liferay 7 开发一些功能。我知道仍处于 beta 版本,但我在 OSGi 包依赖项方面遇到了一些麻烦。当我尝试部署服务项目时,部署时发生错误

未解决的需求:Import-Package: com.liferay.asset.kernel.model;版本="[1.0.0,2.0.0)"

Anda 与其他类似 expando 导入包的情况相同。

问题是在我的 Eclipse Mars 中没有错误,在 Dependencies 中我可以找到 Jar com.liferay.portal.kernel 中的类,我不知道为什么会抛出该错误。

在我的 build.gradle 我有这种依赖

编译'com.liferay.portal:com.liferay.portal.kernel:2.1.0'

我的 bnd 文件包含下一个:

 Bundle-Version: 1.0.0 
Liferay-Service: true
Require-Capability: liferay.extender;filter:="(&(liferay.extender=spring.extender)(version>=1.0)(!(version>=3.0)))"
Liferay-Require-SchemaVersion: 1.0.0
Liferay-Spring-Context: META-INF/spring
-sources: true
Import-Package: \
    com.liferay.portal.service;version="7.0.0",\
    com.liferay.portal.kernel;version='2.1.0',\
    org.osgi.framework;version="[1.7,2)",\
    *

任何人都知道在哪里查看那些限制为 1.0.0 到 2.0.0 的运行时依赖项?

欢迎任何帮助,因为我失去了很多时间,而且我真的是这方面的初学者。

我想我正在处理这个问题,但出现了一个新问题......当我在我的服务项目中执行 buildService 时,它​​会创建所有东西,但问题是它在 SqlUpdateFactoryUtil 中创建错误,给出的参数与 7.0 的 API 不同,所以抛出的错误是:

SqlUpdate sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(dataSource,
                                                      ^
  required: DataSource,String,int[]
  found: DataSource,String
  reason: actual and formal argument lists differ in length

所以我猜服务构建器插件与我的 jar 版本不同步

4

3 回答 3

2

将此行添加到 bnd.bnd 文件中,这将解决您的问题:

Import-Package: *; version="0";resolution:=optional
于 2020-07-10T11:03:42.240 回答
1

回复我自己和所有面临同样问题的人。

重点是各种问题。

  • Elipse Mars 不会自动刷新 Jars 依赖项,您需要使用选项“Gradle --> Refresh Gradle Project”。
  • 依赖项的错误使用。由于我是初学者,我使用不正确的依赖项并尝试导入内核,但门户服务 7.0.0 就足够了。

现在我的所有三个项目(服务、api 和 web)都已正确部署并处于活动状态。

现在我面临着试图包含在同一个保护多个 MVCPortlet 类中的其他问题。但这是另一场战争。

于 2016-03-26T10:58:02.377 回答
0

您正在使用 2.1.0 版本的 artifact com.liferay.portal:com.liferay.portal.kernel

但是,有人用版本 [1.0.0, 2.0.0) 声明了对此工件的运行时依赖项:大于或等于 1,并且严格小于 2。无法解析此版本,因为 2.1 大于 2。

您应该检查您的清单以修复此依赖关系,或者更好地使用工具(如 bnd)来生成此清单。

于 2016-03-25T15:17:02.100 回答