CQ サービスの呼び出し時の ClassCastException

問題点

/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 システムにとって、あなたのクラスは同じではありません。

アドビのロゴ

アカウントにログイン