我有一个 Web 应用程序 A,它依赖于库 B,而库 B 又使用库 C。A、B 和 C 都是 Maven 项目(A 是 a war
,B 和 C 是jar
s)。
当我将 A 部署到应用程序容器时,会调用 B 中某个类的某个方法,该方法引用库 C 中的 D 类。
那时,我得到了一个NoClassDefFoundError
for D. D uses (imports) packagesjava.sql
和org.slf4j
.
我探索了以下假设,但没有一个是正确的:
- 使用了不同版本的 C。为了排除这个假设,我
mvn dependency:tree
在 A 的目录中运行,发现只有一个对 C 的引用。 - C 不包含在
war
A 的文件中。我打开文件target\A.war\WEB-INF\lib\C.jar\
并且 D 的类文件出现在正确的位置(即这个假设是不正确的)。
我该如何解决这个错误?