Java 从不同的第三个库中排除slf4j

Java 从不同的第三个库中排除slf4j,java,logging,solr,intellij-idea,slf4j,Java,Logging,Solr,Intellij Idea,Slf4j,在我的项目中,我使用Solr4.10(作为单独的工件)、Tika1.6和Tomcat7。 Solr需要将日志库放在tomcat7_dir/lib中。Tika也有slf4j库。因此,在项目开始时,我收到多个绑定警告: SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/C:/.../apache-tomcat-7.0.39/lib/slf4j-log4j12-1.7.6.jar

在我的项目中,我使用Solr4.10(作为单独的工件)、Tika1.6和Tomcat7。 Solr需要将日志库放在tomcat7_dir/lib中。Tika也有slf4j库。因此,在项目开始时,我收到多个绑定警告:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/.../apache-tomcat-7.0.39/lib/slf4j-log4j12-1.7.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/.../out/artifacts/war/WEB-INF/lib/slf4j-log4j12-1.7.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/.../out/artifacts/war/WEB-INF/lib/tika-app-1.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]

如何在Intellij Idea中删除不必要的库?

在这种情况下,您应该将slf4j.jar保存在tomcat/lib中,并删除所有其他slf4j jar。
在eclipse中,可以将web项目配置为在编译时使用一组JAR(因此您的项目可以编译),但不会打包在war中。IntelliJ应该也能做同样的事情。

解决了这个小问题:

  • 从tika的jar中删除org/log4j(WinRar刚刚打开并删除了这个文件夹)
  • 在tomcat/lib中放入slf4j-log4j12-1.7.7.jar、slf4j-api-1.7.6.jar和log4j-1.2.17.jar
  • 项目设置(Shift+Ctrl+Alt+S)、模块、依赖项选项卡->添加jar或目录,从tomcat\lib中选择slf4j-api-1.7.6.jar并设置提供的范围
  • 还要确保您的工件中没有这个库

  • 感谢您的回复,但我使用的是Intellij Idea,没有.pom文件。在项目设置中,我从tomcat_dir/lib添加了一些库(log4j、slf4j api、slf4j-log4j12)。并为tika的slf4j设置排除。但警告再次出现。Intellij在编译阶段将库从tomcat_dir/lib复制到输出文件夹。