Apache Tika パッケージのインポートが欠落しているため、AEM Cloud Managerのデプロイメントが失敗する
この記事では、カスタムアプリケーションバンドルにApache Tika パッケージのインポートが見つからないことが原因で発生する、Adobe Experience Manager Cloud Manager環境でのデプロイメントパイプラインのエラーに対処する方法について説明します。
説明 description
環境
- Adobe Experience Manager(AEM)as a Cloud Service
- Cloud Manager
問題/症状
-
デプロイメントステップ中に、QA環境でデプロイメントパイプラインが失敗します。
-
以前のすべてのパイプラインステップ(ビルド、コード品質、画像ビルド、トランスフォームジョブ、インデックス更新)が正常に完了しました。
-
デプロイメントが失敗し、コンテナの準備ができていないことを示すエラーが表示されます。
-
AEMの公開ログには、PDFの抽出機能に関連するOSGi Frameworkの繰り返しエラーが表示されます。次のようなエラーが発生します。
NoClassDefFoundError: org/apache/tika/io/IOExceptionWithCauseClassNotFoundException: org.apache.tika.io.IOExceptionWithCause not found
-
プラットフォームが提供するApache Tika バンドル (
org.apache.tika.core、org.apache.tika.parsers)が存在し、アクティブです。 -
カスタムアプリケーションバンドルは、必要な
org.apache.tika.*パッケージをインポートしないため、Tika クラスを参照する際にクラスの読み込みが失敗します。 -
この問題は、影響を受ける環境のすべてのパイプライン実行で再現できます。
原因
カスタムアプリケーションバンドルが必要なApache Tika パッケージをインポートしないため、デプロイメントパイプラインが失敗し、サービスの起動時にクラスロードエラーが発生します。
解決策 resolution
Apache Tika パッケージの読み込みが欠落したことによるデプロイメントエラーを修正するには、次の手順に従います。
-
影響を受けるバンドルの「パッケージをインポート」セクションを編集して、
org.apache.tika.ioなど、必要なすべてのorg.apache.tika.*パッケージを明示的にインポートします。 -
例(
bnd.bndまたは同等の場合):Import-Package: org.apache.tika.io, org.apache.tika.* -
バンドルに独自のバージョンのApache Tikaが埋め込まれていないことを確認します。 バージョンの競合を回避するには、プラットフォームが提供するTika バンドルを利用します。
-
更新されたバンドルをコミットし、Cloud Manager パイプラインを介してデプロイします。
-
AEM Web コンソールで、カスタムバンドルが
org.apache.tika.coreのインポートバンドルとしてリストされていることを確認します。 -
Tika クラスの
NoClassDefFoundErrorまたはClassNotFoundExceptionがログに表示されないことを確認します。 -
PDFの抽出と関連サービスが、OSGi Framework エラーなしで開始されることを検証します。