0

しばらくの間 mapstruct を使用していますが、Web サービスの 1 つをデプロイしようとしているときに次の問題が見つかりました。

Target state: deploy failed on Server my_server
java.lang.ClassNotFoundException: Cannot find implementation for bar.foo.mapper.MyMapper

at weblogic.deploy.api.tools.deployer.Jsr88Operation.report(Jsr88Operation.java:547)
at weblogic.deploy.api.tools.deployer.Deployer.perform(Deployer.java:140)
at weblogic.deploy.api.tools.deployer.Deployer.runBody(Deployer.java:88)
at weblogic.utils.compiler.Tool.run(Tool.java:158)
at weblogic.utils.compiler.Tool.run(Tool.java:115)
at weblogic.Deployer.run(Deployer.java:74)
... 15 more

展開されている WAR を確認すると、同じ bar.foo.mapper フォルダーに MyMapper.class と MyMapperImpl.class があり、正常に動作する他のサービスと同様です。

POM では、公式ドキュメントに記載されているセットアップに従いました。

私はすでに @gunnar の回答をここで読んでいますが、私の場合、実装は WAR のインターフェイスの横にあります。

何か案は?

ありがとう!

更新: バージョン 1.1.0.Beta1 で試してみたところ、同じ結果が得られました

UPDATE-2 : これは、スローされた例外のログです。

Caused By: java.lang.ClassNotFoundException: Cannot find implementation for bar.foo.mapper.MyMapper
        at org.mapstruct.factory.Mappers.getMapper(Mappers.java:94)

デバッグ中に、ここで例外がスローされます。

T mapper = (T) classLoader.loadClass( clazz.getName() + IMPLEMENTATION_SUFFIX ).newInstance();

...クラスがインターフェースの横にあるにもかかわらず、classLoader.loadClassがbar.foo.mapper.MyMapperImplを見つけられないためです。

4

1 に答える 1