Liferay预定的工作因失去Liferay的课程而失败

时间:2017-06-24 17:48:18

标签: cron liferay quartz-scheduler

我使用this guide撰写了Liferay工作。我正在运行liferay-ce-portal-tomcat-7.0-ga3。该作业使用DLAppServiceUtil来处理文档库。

工作按计划完成。但问题是这个例外:

Exception in thread "liferay/scheduler_dispatch-407" java.lang.NoClassDefFoundError: com/liferay/portlet/documentlibrary/service/DLAppServiceUtil

怎么了?

我的pom.xml是:

<!-- ... -->
<dependency>
    <groupId>com.liferay.portal</groupId>
    <artifactId>portal-service</artifactId>
    <version>7.0.0-nightly</version>
    <scope>provided</scope>
</dependency>
<!-- ... -->

我的职业是:

public class MyJob implements MessageListener {

    @Override
    public void receive(Message message) throws MessageListenerException {
      // DLAppServiceUtil usage...
    }

}

我该如何解决?

2 个答案:

答案 0 :(得分:1)

在Liferay 7中,不要再使用serviceUtil类(假设您编写了OSGi包)。

改为添加

@Reference
DLAppService dlAppService;

到你的组件类。查看如何使侦听器成为正确的OSGi组件。 Liferay在github上的刀片样本可能有一个模板。我在手机上,很难查找并更详细地解释所有内容。

如果这不起作用(正如您在评论中指出的那样),则必须检查构建过程:确保插件的Manifest声明它对所需服务的依赖关系。从这里你可以看到我建议构建OSGi插件 - 我假设你没有这样做,因为在依赖关系得到解决之前,OSGi不会启动你的插件。

你可以通过使用bnd来实现。查看blade-samples中的众多Maven示例以获取更多详细信息。

答案 1 :(得分:0)

这些类不再是portal-service的一部分,com.liferay.portal.kernel是正确的工件。

很奇怪IDE不会抱怨...