我正在为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版本不同步
答案 0 :(得分:1)
回复自己和所有面临同样问题的人。
关键是各种问题。
现在我的所有三个项目(服务,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