【发布时间】:2014-08-22 11:14:00
【问题描述】:
我正在使用 Maven 和 Tomcat。我必须部署的一些 Web 应用程序使用大量在 Maven 中标记为“已提供”的依赖项。这些依赖关系的一个例子是 spring-context。
所以,当我打包项目时,这些依赖项不包含在 WAR 文件的 lib 文件夹中。 正因为如此,我得到了
NoClassDefFoundError: org/springframework/context/ApplicationContext
我无法更改依赖项的范围,如果可能,我不想在 WAR 文件中包含依赖项 JAR。
如何将 Maven 存储库作为类路径添加到 Tomcat,以便它可以解析所有“提供”的依赖项?无需将 JAR 复制到 Tomcat 的 lib 文件夹。
我尝试了 catalina.properties 中的 shared.loader 属性,但它不能递归工作:我必须将每个 JAR 路径添加到属性的值。
【问题讨论】:
-
mvn -Dmdep.outputFile=FILE dependency:build-classpath会将所有依赖项的完全限定路径名写入FILE,格式适合java -cp。分解此字符串并将依赖项复制到 Tomcat 的共享 lib 目录中应该是一件容易的事。 注意,但是,如果你这样做,你将陷入类路径地狱(这就是我没有发布答案的原因;它会被正确地拒绝为遗忘)。
标签: java maven tomcat classpath noclassdeffounderror