首页 > 解决方案 > Tomcat 7:从我没有打包的战争中排除一个 jar

问题描述

我确实有一个运行应用程序的 Tomcat 7。在这个 tomcat 上,在 tomcat/lib 文件夹中,有一个应用程序使用的 jar log4j-over-slf4j.jar

现在我正在尝试部署一个我没有编码或构建的 webapp(更准确地说是 Hawtio),只需将该应用程序的 war 放在 tomcat/webapp 文件夹中即可。但是,Hawtio 正在使用slf4j-log4j12.jar ,并且两个 jar 之间出现了委托循环冲突,并且引发了异常,从而阻止了 Hawtio 启动。

我已经尝试从 tomcat/lib 文件夹中删除log4j-over-slf4j.jar并且它可以工作,但我不希望这样做以避免任何回归。有没有办法从战争部署中排除存储在 tomcat/lib 文件夹中的 jar?

标签: tomcatjarlog4jtomcat7war

解决方案


更新您的 pom.xml 以排除 slf4j 文件

查看您的 maven 依赖项并查看哪些使用 slf4j 并可能将其包含在 war 文件中。然后将其添加到每个

    <exclusion>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
    </exclusion>

如果您没有针对特定依赖项的任何其他排除项,则需要将上述内容包装起来。


推荐阅读