【发布时间】:2020-05-15 07:57:42
【问题描述】:
我们正在将一个包含多个 ear 文件的应用程序从 Weblogic 11 迁移到 Weblogic 12。其中三个 ear 文件运行良好,当我们部署第四个文件时,它在启动时抛出 ClassNotFoundException。
三个运行耳朵中的两个在这方面并不重要。所以,情况是 A.ear 运行良好,B.ear 无法启动。
B.ears pom.xml 将 A.ear 的一个模块称为与提供和 ejb-client 的依赖项,使用 maven-ear-plugin 将模块称为 ejbClientModule。
由于 maven-ear-plugin,在 B.ear 中创建了一个 jar,以镜像 A.ear 中的模块,在其名称中添加“-client”,但它仅包含 A 中模块的一个子集.ear.
其中一个类派生自 ClassNotFoundException 所指的类。
该应用程序在 Weblogic 11 上以这种方式工作。
谁能告诉我如何解决这个问题并使应用程序在 Weblogic 12 上运行?
【问题讨论】:
-
在 B.ear 中,您正在使用来自 A.ear 的模块。并提供范围。你得到 ClassNotfoundException .. 对吗?这是你的问题?此异常发生在部署期间。这不是运行时异常。因此,您需要在部署期间在 B.ear 中使用来自 A.ear 的名为 classes 的相同包。删除提供的 scrope,让依赖模块在 lib 文件夹中创建,然后部署 appl B.ear 并检查。
-
我试过了,还是一样。我尝试手动将文件放入 B.ear 中,看看会出现什么其他问题。然后它丢失了另一个文件,并且通过更改范围也不会改变该错误。你知道为什么吗?
-
请提供您的旧工作 EAR 模块扩展的快照和有故障的新 EAR 模块的快照。也给你的 pom.xml。并告诉我你得到的错误。还有带有异常堆栈跟踪的部署日志。给个全图,不然很难说。
标签: java migration ejb weblogic weblogic12c