legacy-knowledge-base
公開されました Jul. 2, 2025

アップグレード後、Mavenを使用してService Builderが正しくコンパイルされない:ArgumentsResolver が com.liferay.portal.kernel.dao.orm で見つかりません。

投稿者

Jorge Diaz

knowledge-article-header-disclaimer-how-to

knowledge-article-header-disclaimer

legacy-article

learn-legacy-article-disclaimer-text

問題

DXP 7.0から7.3にアップグレードした後、Mavenを使用してサービスビルダーサービスを再コンパイルしようとすると、エラー "ArgumentsResolver is not found in com.liferay.portal.kernel.dao.orm" が発生しています:

[ERROR] /Users/mac/productproject/productservice/productservice-service/src/main/java/com/productservice/service/persistence/impl/ProductPersistenceImpl.java:[558,25] cannot find symbol
[ERROR] symbol: class ArgumentsResolver
[ERROR] location: class com.productservice.service.persistence.impl.ProductPersistenceImpl
[ERROR] /Users/mac/productproject/productservice/productservice-service/src/main/java/com/productservice/service/persistence/impl/ProductPersistenceImpl.java:[649,41] no suitable constructor found for FinderPath(java.lang.String,java.lang.String,java.lang.String[],java.lang.String[],boolean)
[ERROR] constructor com.liferay.portal.kernel.dao.orm.FinderPath.FinderPath(boolean,boolean,java.lang.Class<?>,java.lang.String,java.lang.String,java.lang.String[]) is not applicable
[ERROR] (actual and formal argument lists differ in length)
[ERROR] constructor com.liferay.portal.kernel.dao.orm.FinderPath.FinderPath(boolean,boolean,java.lang.Class<?>,java.lang.String,java.lang.String,java.lang.String[],long) is not applicable
[ERROR] (actual and formal argument lists differ in length)
[ERROR] /Users/mac/productproject/productservice/productservice-service/src/main/java/com/productservice/service/persistence/impl/ProductPersistenceImpl.java:[670,17] method does not override or implement a method from a supertype
[ERROR] /Users/mac/productproject/productservice/productservice-service/src/main/java/com/productservice/service/persistence/impl/ProductPersistenceImpl.java:[675,58] cannot find symbol
[ERROR] symbol: method getColumnNames()
[ERROR] location: variable finderPath of type com.liferay.portal.kernel.dao.orm.FinderPath
[ERROR] -> [Help 1]

私たちは、このpom.xmlでサービスビルダーをコンパイルするために、mavenを使用しています。

  <dependency>
<groupId>com.liferay.portal</groupId>
<artifactId>com.liferay.portal.kernel</artifactId>
<version>8.0.0</version>
<scope>provided</scope>
</dependency>

https://issues.liferay.com/browse/MAVEN-272のようなエラーが発生します。

Environment

  • DXP 7.3

解決策

LiferayのDXP 7.3エンタープライズ版でArgumentsResolverが追加されたようですが、pom.xmlの設定を確認したところ、古いバージョンを指しています。

Liferay DXP 7.3の内部カーネルバージョンは9.8.1で起動しました。 そのため、pom.xmlの設定はこの数値よりも低く、少なくともcom.liferay.portal.kernel artifactの9.8.1バージョンを使用する必要があるはずです。

このバージョンを変更するだけで、ArgumentsResolverのコンパイルの問題を解決できるはずです。

ターゲットプラットフォーム "機能を使ってバージョン依存性を処理する。

Liferayモジュールの依存関係をすべて手動で処理するのは難しいので、 com.liferay.portal.kernel artifactのバージョンを手動で変更する代わりに、新しい「ターゲットプラットフォーム」メカニズムを使うこともできます。このメカニズムではLiferayバージョン/ fixpackを一箇所に設定すれば、各Liferayモジュールに固有のバージョンを解決してくれます。

このメカニズムに関する公式ドキュメント(7.2リンク集)

この7.2のドキュメントについてですが、7.2.10のrelease.dxp.bomの参照を、maven centralで公開されている7.3.10のものに置き換える必要があるようです:


以下に例を示します。

<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.liferay.portal</groupId>
<artifactId>release.dxp.bom</artifactId>
<version>7.3.10</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.liferay.portal</groupId>
<artifactId>release.dxp.bom.compile.only</artifactId>
<version>7.3.10</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.liferay.portal</groupId>
<artifactId>release.dxp.bom.third.party</artifactId>
<version>7.3.10</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>


また、Target Platformについては、コミュニティメンバーのDavid Nebingerが書いたLiferay Portalのコミュニティブログに非常に良いドキュメントがあります:


Liferay PortalのBOMではなく、DXPエンタープライズ版のBOMを使用するためには、常に "release.portal.bom "の参照をすべて "release.dxp.bom "に置き換え、7.3.10バージョンを使用しなければならないことに注意してください。 (または7.3 fixpack 1用のものである7.3.10.1バージョン)。

did-this-article-resolve-your-issue

legacy-knowledge-base