java - Weblogic 12c-Mapstruct-1.0.0.Final-ClassNotFoundException : Cannot find implementation

标签 java weblogic12c mapstruct

我已经使用mapstruct有一段时间了,但在尝试部署我的一个网络服务时发现了这个问题:

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中,我遵循了官方doc中所述的设置。 .

我已经阅读了 @gunnar 的回答 here ,但在我的例子中,实现位于 WAR 中的接口(interface)旁边。

有什么想法吗?

谢谢!

更新:我刚刚尝试使用版本 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,即使该类位于界面旁边。

最佳答案

您能否尝试创建 Mappers 类的副本,并使用 clazz.getClassLoader() 作为 impl 类的加载器?这应该可以解决问题。你能让我知道这是否有效吗?如果是这样,我们将在下一个版本中更改它。谢谢!

关于java - Weblogic 12c-Mapstruct-1.0.0.Final-ClassNotFoundException : Cannot find implementation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36473321/

相关文章:

weblogic - 从 Weblogic 获取配置字符串

java - Maven Oracle Artifact pom 依赖项配置

Java 类型-细化映射

mapstruct - 使用 MapStruct 进行嵌套列表映射

java - 如何使用 MapStruct 在一个字段中应用 List?

java - 通过示例理解 volatile 变量

java - JPanel 上 JLabel 的定位

java - 无法通过 Dockerized WebLogic 将 Debug 设置为适用于 Java,不能使用 IntelliJ 或 Studio Code

java - Spring JPA 中的作者少书籍多对多关系

java - Scala 到 Java 的转换