在 Liferay 7 中使用 LocalServiceUtils

Using LocalServiceUtils in Liferay 7

我们正在开始我们的第一个 Liferay 7 项目,但我已经卡住了。

我想创建一个从 DDMContent Table 读取数据的 portlet。 幸运的是有 DDMContentLocalServiceUtil。

我正在为如何实际使用它而苦苦挣扎。

我像这样将它添加到 build.gradile 文件中:

compileOnly group: "com.liferay", name: "com.liferay.dynamic.data.mapping.api", version: "3.1.0"

我像这样将它添加到 bnd.bnd 文件中:

Import-Package: com.liferay.dynamic.data.mapping.api;version=3.1.0

然后我像这样将 class 包含在我的 portlet 中:

@Reference
    public void setContentLocalServiceUtil(DDMContentLocalServiceUtil contentLocalServiceUtil) {
        this.contentLocalServiceUtil = contentLocalServiceUtil;
    }

Portlet 编译并开始部署,但我从未达到可以实际使用它的地步,因为它从未完全部署过。 没有异常,也没有提示我做错了什么。

我的版本号正确吗? 我需要将它添加到 bnd.bnd 文件吗? 谁能帮帮我?

此致,

丹尼尔

1) 你应该使用

Import-Package: *

然后让 BND 根据您正在编译的 jar 文件(您在 Gradle 的依赖项中拥有的文件)为您解决这个问题

2) 不要导入<Name>LocalServiceUtil类。这些不是 OSGi 服务。请改用 <Name>LocalService。这些是定义契约的接口。在您的情况下,它应该是:

@Reference
public void setContentLocalService(DDMContentLocalService contentLocalService) {

3) 如果您的包仍然无法正常启动,请连接到 gogo shell (telnet localhost 11311) 并检查其状态。使用 diag 命令或简单地尝试使用 start <bundleId> 手动启动它,框架会告诉您它是否有问题。