0

我已经按照给出的 2 个教程在使用 Ant/Ivy 构建的 Liferay dxp 插件 SDK portlet 中使用 COnfigurationAPI。 配置 API 1 配置 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 ,服务范围=捆绑}

原因:java.lang.IllegalArgumentException:参数数量错误

那么,这个过程是否需要强制使用 osgi 模块,或者我们也可以使用使用 ant 构建的 plusings sdk portlet 来完成它?

4

1 回答 1

1

不剖析错误消息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 Workspace(基于 gradle)中使用一个最小的例子来重现这个,只是为了让所有的自动接线都进来。检查它是否有区别并比较生成的输出使用工作区输出的 Ant 构建过程。特别注意清单。

为了构建正确的 Manifest,您想使用 bnd - 如果 Manifest 最终成为您的问题:找到一种方法来拥抱 bnd - 如果这是通过向 Ant 说再见,或者通过调整您的构建脚本仍然是您的决定。

于 2019-04-26T06:43:25.967 回答