我使用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...
}
}
我该如何解决?
答案 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不会抱怨...