Liferay 7服务模块未解决的要求

时间:2016-03-25 14:26:53

标签: gradle liferay osgi bnd liferay-7

我正在为Liferay 7开发一些功能。我知道它仍处于测试版,但我遇到了一些OSGi包依赖的问题。当我尝试部署服务项目时,部署

时发生错误
  

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

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

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

在我的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中创建错误,给出的参数与API不同7.0因此抛出的错误是:

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

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

3 个答案:

答案 0 :(得分:1)

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

关键是各种问题。

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

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

现在我正面临其他问题,试图包含同样的保护多个MVCPortlet分支。但这是另一场战争。

答案 1 :(得分:0)

您正在使用工件com.liferay.portal:com.liferay.portal.kernel的版本2.1.0。

然而,有人使用版本[1.0.0,2.0.0]声明对此工件的运行时依赖性:大于或等于1,严格小于2.此版本无法解析,因为2.1是大于2。

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

答案 2 :(得分:0)

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

Import-Package: *; version="0";resolution:=optional