問題
サイトビルダー」=> 「ページ」を開くと、以下のエラーが発生し、サイトページが表示されない:
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
解決策
- その解決策とは? 明確であること、簡潔であること、正しいこと
追加情報
{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言語を追加する。
- アプリケーションサーバーを停止する
- portal-ext.のプロパティを編集する
- ファイルで、localesとlocales.enabledのプロパティにen_USを追加する例です:
locales=ca_ES,es_ES,en_US
locales.enabled=ca_ES,es_ES,en_US
- アプリケーションサーバーを起動します:ResourcePermissionテーブルの不足するen_USエントリーは、スタートアップ時に追加されます。
選択肢2:インスタンス構成からen_US言語を削除する
システムでen_USローカルを使用しない場合、インスタンス構成から削除することができます。
- コントロールパネル => インスタンス設定 => ローカライズに移動します。
- Current」列から「en_US」ロケールを削除する。 これらの言語は、portal-ext.propertiesの設定と一致している必要があります。
- 変更を保存