legacy-knowledge-base
公開されました Sep. 10, 2025

クラスに関するサービスビルダのアップグレードの問題"java.lang.ClassNotFoundException: com.liferay.portal.kernel.service.PersistedModelLocalServiceRegistry が com.mchi.master.service.service_1.0.0 で見つかりません。"

written-by

Rishabh Agrawal

How To articles are not official guidelines or officially supported documentation. They are community-contributed content and may not always reflect the latest updates to Liferay DXP. We welcome your feedback to improve How To articles!

While we make every effort to ensure this Knowledge Base is accurate, it may not always reflect the most recent updates or official guidelines.We appreciate your understanding and encourage you to reach out with any feedback or concerns.

legacy-article

learn-legacy-article-disclaimer-text

問題

  • DXP 7.2 のサービスビルダーを DXP 7.4 2023 Q4.0 にアップグレード中にClassNotFoundException エラーが発生しました。
  • エラーは次のようになる:
    2024-01-18 09:31:22.491 ERROR [Refresh Thread: Equinox Container: 7c691475-51d0-4491-a1a2-40bee687e2d2][ModuleApplicationContextExtender:72] null
    java.lang.ClassNotFoundException: com.liferay.portal.kernel.service.PersistedModelLocalServiceRegistry cannot be found by com.mchi.master.service.service_1.0.0

環境

  • Liferay DXP 7.4 2023年第4四半期

解像度

以下はその手順である:

    1. に基づいて、"PersistedModelLocalServiceRegistry " の代わりに"ServiceTrackerMap "クラスを使用してください。 LPS-199563.
    2. Liferay Developer Studio (LDS)には四半期リリース用のタグがまだ追加されていませんので、製品バージョンのドロップダウンから'dxp-7.4-u102'を選択してください。
    3. ServiceTrackerMapは、サービスを追跡するために使用されるが、サービスの登録には使用されない。 ServiceTrackerMapは、基本的にはServiceTrackerと同じですが、ServiceTrackerMapでは、プロパティに基づいてサービスを分類できる点が異なります。
    4. 具体的な使用例としては、ServiceTrackerMapについて知る必要すらありません。 https://github.com/liferay/liferay-portal/blob/eb207a1de06962b270c82900e178f3d6b5ef5dcf/portal-impl/src/com/liferay/portal/service/PersistedModelLocalServiceRegistryUtil.javaユーザが特定の model.class.name に基づいてサービスを取得したい場合は、次のように実行するだけです:「PersistedModelLocalServiceRegistryUtil.getPersistedModelLocalService(modelClassName);" を実行するだけです。
    5. ユーザが新しい PersistedModelLocalService を登録したい場合、@Component を定義するか、あるいは以下のようにサービスの登録をインライン化することができます:
      _serviceRegistration = bundleContext.registerService(
      PersistedModelLocalService.class,
      customServiceObject,
      MapUtil.singletonDictionary("model.class.name", CustomService.class.getName()));
  • 6. Implに関するエラーが発生した場合は、settings.gradle
    7のcom.liferay.gradle.plugins.workspaceのバージョンを9.0.4に変更してください。 モジュールからsrc/main/javaディレクトリを削除し、Gradleをリフレッシュします。
    8. settings.gradleで、依存関係のクラスパスのバージョンを "9.1.1 "に変更する:「classpath(group:"com.liferay", name: "com.liferay.gradle.plugins.workspace", version:"9.1.1")".

    9. ユーザーが試しているバージョンでエラーが発生した場合は、src/main/javaファイルを削除してサービスをリフレッシュし、ビルドが成功するまで異なるバージョンで再試行することができる。
did-this-article-resolve-your-issue

legacy-knowledge-base