1

我们正在开始我们的第一个 Liferay 7 项目,但我已经陷入困境。

我想创建一个从 DDMContent 表中读取数据的 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

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

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

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

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

此致,

丹尼尔

4

1 回答 1

4

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>框架会告诉你它是否有问题。

于 2016-12-12T12:52:47.073 回答