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

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

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

問題

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