1

我有一个 Web 应用程序 A,它依赖于库 B,而库 B 又使用库 C。A、B 和 C 都是 Maven 项目(A 是 a war,B 和 C 是jars)。

当我将 A 部署到应用程序容器时,会调用 B 中某个类的某个方法,该方法引用库 C 中的 D 类。

那时,我得到了一个NoClassDefFoundErrorfor D. D uses (imports) packagesjava.sqlorg.slf4j.

我探索了以下假设,但没有一个是正确的:

  1. 使用了不同版本的 C。为了排除这个假设,我mvn dependency:tree在 A 的目录中运行,发现只有一个对 C 的引用。
  2. C 不包含在warA 的文件中。我打开文件target\A.war\WEB-INF\lib\C.jar\并且 D 的类文件出现在正确的位置(即这个假设是不正确的)。

我该如何解决这个错误?

4

1 回答 1

0

问题是由库 B 被 ProGuard 混淆的事实引起的。在我禁用它的混淆后,一切都开始工作了。

于 2013-05-05T09:31:36.193 回答