問題点

/classes/.../serviceclass に配置されたカスタム CQ サービスを設定しました。(ServiceManager.getService() によって)JSP スクリプトからこの CQ サービスにアクセスしようとすると、ClassCastException が取得されます。

解決策

クラスが同じ classloader から読み込まれるようにするには、クラスファイル(パッケージディレクトリ階層を含む)を jar ファイルに指定します。次に、/system/bin.new/lib. にコピーします。com.day.cq.bootstrap.BootClassLoader はクラスを読み込みます。サービスマネージャーと JSP システムは、com.day.cq.bootstrap.BootClassLoader を使用します。

注意:

クラスが /classes/... に存在しないこと、或いは、cqde の前のコンパイルからクラスキャッシュ (/system/works/classes) に存在することを確認します。その後、再起動します。

追加情報

ClassCastException は、サービスマネージャーと JSP システムが同じ classloader を使用していない場合に発生します。したがって、サービスマネージャーおよび JSP システムにとって、あなたのクラスは同じではありません。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー