legacy-knowledge-base
公開されました Jun. 30, 2025

com.liferay.portal.kernel.exception.NoSuchResourcePermissionException:{companyId=20100, name=com.liferay.translation.en_US, primKey=com.liferay.translation.en_US, scope=4}.

written-by

Jorge Diaz

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

問題

サイトビルダー」=> 「ページ」を開くと、以下のエラーが発生し、サイトページが表示されない:

com.liferay.portal.kernel.exception.NoSuchResourcePermissionException: {companyId=20100, name=com.liferay.translation.en_US, primKey=com.liferay.translation.en_US, scope=4}
at com.liferay.portal.service.impl.ResourcePermissionLocalServiceImpl.hasResourcePermission(ResourcePermissionLocalServiceImpl.java:1080) ~[portal-impl.jar:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at com.liferay.portal.kernel.bean.ClassLoaderBeanHandler.invoke(ClassLoaderBeanHandler.java:66) ~[portal-kernel.jar:?]
at com.liferay.portal.kernel.service.ResourcePermissionLocalServiceWrapper.hasResourcePermission(ResourcePermissionLocalServiceWrapper.java:800) ~[portal-kernel.jar:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at com.liferay.portal.kernel.bean.ClassLoaderBeanHandler.invoke(ClassLoaderBeanHandler.java:66) ~[portal-kernel.jar:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:50) ~[portal-impl.jar:?]
at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:69) ~[portal-impl.jar:?]
at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:57) ~[portal-impl.jar:?]
at com.liferay.portal.spring.aop.AopInvocationHandler.invoke(AopInvocationHandler.java:49) ~[portal-impl.jar:?]
at com.liferay.portal.service.impl.ResourceLocalServiceImpl.hasUserPermissions(ResourceLocalServiceImpl.java:408) ~[portal-impl.jar:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:50) ~[portal-impl.jar:?]
at com.liferay.portal.spring.aop.AopInvocationHandler.invoke(AopInvocationHandler.java:49) ~[portal-impl.jar:?]
at com.liferay.portal.kernel.service.ResourceLocalServiceUtil.hasUserPermissions(ResourceLocalServiceUtil.java:345) ~[portal-kernel.jar:?]
at com.liferay.portal.security.permission.AdvancedPermissionChecker.doCheckPermission(AdvancedPermissionChecker.java:421) ~[portal-impl.jar:?]
at com.liferay.portal.security.permission.AdvancedPermissionChecker._hasUserPermissionImpl(AdvancedPermissionChecker.java:1309) ~[portal-impl.jar:?]
at com.liferay.portal.security.permission.AdvancedPermissionChecker._hasPermissionImpl(AdvancedPermissionChecker.java:1278) ~[portal-impl.jar:?]
at com.liferay.portal.security.permission.AdvancedPermissionChecker.hasPermission(AdvancedPermissionChecker.java:243) ~[portal-impl.jar:?]

Environment

  • Liferay DXP 7.3
  • Liferay DXP 7.4

解決策

  • その解決策とは? 明確であること、簡潔であること、正しいこと

追加情報

com.liferay.portal.kernel.exception.NoSuchResourcePermissionException 例外が発生する根本原因は、ResourcePermission テーブルに en_US 言語にリンクしたレコードがないことです:
 {companyId=20100, name=com.liferay.translation.en_US, primKey=com.liferay.translation.en_US, scope=4}

このen_US言語はportal-ext.propertiesにはありませんが、インスタンスでは使用されています。

それを解決するためには、2つの選択肢があります:

オプション1:portal-ext.propertiesにen_US言語を追加する。

  1. アプリケーションサーバーを停止する
  2. portal-ext.のプロパティを編集する
  3. ファイルで、localesとlocales.enabledのプロパティにen_USを追加する例です:
    • locales=ca_ES,es_ES,en_US
    • locales.enabled=ca_ES,es_ES,en_US
  4. アプリケーションサーバーを起動します:ResourcePermissionテーブルの不足するen_USエントリーは、スタートアップ時に追加されます。

選択肢2:インスタンス構成からen_US言語を削除する

システムでen_USローカルを使用しない場合、インスタンス構成から削除することができます。

  1. コントロールパネル => インスタンス設定 => ローカライズに移動します。
  2. Current」列から「en_US」ロケールを削除する。 これらの言語は、portal-ext.propertiesの設定と一致している必要があります。
  3. 変更を保存

did-this-article-resolve-your-issue

legacy-knowledge-base