Problem

Sie haben einen benutzerdefinierten CQ-Service in /classes/.../serviceclass konfiguriert. Wenn Sie versuchen, über ein JSP-Skript (von ServiceManager.getService() auf diesen CQ-Dienst zuzugreifen, erhalten Sie eine ClassCastException.

Lösung

Um sicherzustellen, dass Ihre Klasse von demselben Klassenlader geladen wird, legen Sie Ihre Klassendatei (einschließlich der Paketverzeichnishierarchie) in eine JAR-Datei. Kopieren Sie es dann nach /system/bin.new/lib. Der com.day.cq.bootstrap.BootClassLoader lädt Ihre Klasse. Der Service Manager sowie das JSP-System verwenden den com.day.cq.bootstrap.BootClassLoader.

Hinweis:

Stellen Sie sicher, dass Ihre Klasse nicht in /classes/ ... oder immer noch im Klassencache (/system/works/classes) einer früheren Kompilierung in CQDE enthalten ist. Starten Sie dann neu.

Weitere Informationen

Die ClassCastException tritt auf, wenn der Service Manager und das JSP-System nicht den gleichen Klassenlader verwenden. Daher ist Ihre Klasse für den Service Manager und das JSP-System nicht identisch.

Dieses Werk unterliegt den Bedingungen der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.  Twitter™- und Facebook-Beiträge fallen nicht unter die Bedingungen der Creative Commons-Lizenz.

Rechtliche Hinweise   |   Online-Datenschutzrichtlinie