2017-06-24 2 views
0

Ich habe einen Liferay Job geschrieben mit this guide. Ich betreibe liveray-ce-portal-tomcat-7.0-ga3. Der Job verwendet DLAppServiceUtil, um mit der Dokumentbibliothek zu arbeiten.Liferay geplanter Job fehlschlägt auf fehlende Liferay-Klassen

Der Job startet genau wie geplant. Aber das Problem ist diese Ausnahme:

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

Was ist los?

Mein pom.xml ist:

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

Mein Job-Klasse ist:

public class MyJob implements MessageListener { 

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

} 

Wie kann ich es beheben?

Antwort

1

Verwenden Sie in Liferay 7 nicht mehr die serviceUtil-Klassen (vorausgesetzt, Sie schreiben ein OSGi-Paket).

Statt

@Reference 
DLAppService dlAppService; 

in Ihre Komponentenklasse hinzuzufügen. Sehen Sie nach, wie Sie den Listener zu einer geeigneten OSGi-Komponente machen. Liferays Blade-Samples auf GitHub könnten eine Vorlage haben. Ich bin auf meinem Handy, was es schwer macht, nachzuschlagen. & erklären alles im Detail.

Wenn dies nicht funktioniert (wie Sie in Ihrem Kommentar angeben), müssen Sie Ihren Build-Prozess überprüfen: Stellen Sie sicher, dass das Manifest des Plugins die Abhängigkeiten deklariert, die es für den erforderlichen Dienst hat. Hieraus ersehen Sie, dass ich OSGi-Plugins erstellen möchte - ich gehe davon aus, dass Sie das nicht tun, weil OSGi Ihr Plugin erst starten würde, wenn die Abhängigkeiten gelöst sind.

Sie können dies tun, indem Sie bnd verwenden. Überprüfen Sie die zahlreichen Maven Beispiele innerhalb der blade-samples für weitere Details.

+0

ich auf die non_Util Version schaltet, aber es immer noch nicht auf fehlende Klasse: 'java.lang.NoClassDefFoundError: com/liferay/Portlet/Document/service/DLAppService' –

0

Die Klassen sind nicht länger Teil von portal-service, com.liferay.portal.kernel ist das korrekte Artefakt.

seltsam, dass IDE nicht beschweren ...

Verwandte Themen