問題
Liferayサーバーを起動した後、時々、「?
This portlet could not be found. Please redeploy it or remove it from the page.
というエラーが表示され、実際のポートレットは表示されません。
Environment
- Liferay DXPのいずれかのバージョン
解決策
Liferayのログファイルに、起動時のエラーや、問題のあるポートレットがあるページを開いたときにスローされる例外がないかどうかを確認する必要があります。
エラーが見つからない場合は、すべての osgi モジュールが正しくロードされているか、未解決の依存関係がないかを確認する必要があります。
OSGiモジュールを確認するには、 gogo shellを開く必要があります。 ユーザーインターフェースにアクセスできない場合は、コマンドライン からアクセスすることが可能です。
gogoシェルに入ったら、以下のコマンドでシステムモジュールの状態に関する情報を得ることができます:
-
lb -sLiferay のモジュールフレームワークにインストールされているすべてのバンドルを一覧表示します。 バンドルのシンボル名を用いてバンドルをリストアップする場合は、-sフラグを使用します。 -
system:checkds:unsatisfied と dm na コマンドを実行し、システムに異常がないかスキャンします。 -
ds:unsatisfied満足していないすべてのDeclarative Services(DS)コンポーネントをリストアップします。 -
dm na「利用できない」(未解決)であるOSGiコンポーネントをリストアップします。 Dependency Managerの詳細については、「シェルの活用」を参照してください。 -
dm wtfコンポーネントが登録されていないため、そのサービスが利用できない根本的な原因を示します。 コンポーネントには他動的な依存関係があり、この他動的とは、コンポーネントのチェーン全体が、(少数の)ルート依存関係が満たされないために登録されなくなる可能性があることを意味します。wtfは、そのような依存関係を発見するためのものです。 -
scr:info <<component>>コンポーネントの説明、サービス、プロパティ、構成、参照など、特定のコンポーネントに関する情報を一覧表示します。
gogoシェルコマンドの詳細については、 gogo shell comands ページを参照してください。