我已经按照给定的2个教程在使用Ant / Ivy构建的Liferay dxp插件SDK portlet中使用COnfigurationAPI。 COnfiguration API 1 COnfiguration API 2。
以下是使用的配置类:
package com.preferences.interfaces;
import com.liferay.portal.configuration.metatype.annotations.ExtendedObjectClassDefinition;
import aQute.bnd.annotation.metatype.Meta;
@ExtendedObjectClassDefinition(
category = "preferences",
scope = ExtendedObjectClassDefinition.Scope.GROUP
)
@Meta.OCD(
id = "com.preferences.interfaces.UnsupportedBrowserGroupServiceConfiguration",
name = "UnsupportedBrowser.group.service.configuration.name"
)
public interface UnsupportedBrowserGroupServiceConfiguration {
@Meta.AD(deflt = "", required = false)
public String displayStyle();
@Meta.AD(deflt = "0", required = false)
public long displayStyleGroupId(long defaultDisplayStyleGroupId);
}
发布以下步骤,我收到以下错误:
错误[CM配置更新程序(ManagedService更新:pid = [com.preferences.interfaces.UnsupportedBrowserGroupServiceConfiguration])] [org_apache_felix_configadmin:97] [org.osgi.service.cm.ManagedService,id = 7082,bundle = 297 // com.liferay .portal.configuration.settings-2.0.15.jar?lpkgPath = C:\ dev \ Liferay \ osgi \ marketplace \ Liferay Foundation.lpkg]:更新配置时出现意外问题com.preferences.interfaces.UnsupportedBrowserGroupServiceConfiguration {org.osgi.service。 cm.ConfigurationAdmin} = {service.vendor = Apache Software Foundation,service.pid = org.apache.felix.cm.ConfigurationAdmin,service.description = Configuration Admin Service Specification 1.2 Implementation,service.id = 56,service.bundleid = 643 ,service.scope = bundle}
引起:java.lang.IllegalArgumentException:参数个数错误
那么,这个过程是否需要osgi模块作为强制性,或者我们可以使用使用ant构建的plusings sdk portlet来实现吗?
没有解析错误消息Caused by: java.lang.IllegalArgumentException: wrong number of arguments
:
只要您构建一个运行时将理解的插件,您构建插件(Ant,Maven,Gradle,手动)的方式就没有什么区别。 aQute.bnd.annotation.metatype.Meta
坚定地指向OSGi世界,几乎可以肯定你需要一个OSGi模块。当然,您可以使用Ant构建它。即使在Ant中你也可以嵌入像bnd这样的工具,或者你可以编写适当的Manifest.mf来手动包含在你的模块中(只是开玩笑 - 你不想手动完成它,但它会起作用)。
建议:不要将所有内容移动过来:尝试使用gradle或更好的Liferay工作区(基于gradle)中的最小示例来重现这一点,只是为了获得所有自动接线。检查它是否有所作为并比较生成的输出来自您的Ant构建过程与工作区输出。特别注意清单。
为了构建正确的Manifest,你想使用bnd - 如果Manifest证明是你的问题:找到一种方法来拥抱bnd - 如果那是通过对Ant说再见,或者通过调整你的构建脚本仍然是你的决定。