title: Jar conflict in Maven and Tomcat?
body: <p>I'm having some trouble with jar loading. I deployed a Struts2 web application on Tomcat, and it resulted in error:</p>
  
  <pre><code>SLF4J: Class path contains multiple SLF4J bindings.
  SLF4J: Found binding in [jar:file:....../Tomcat%206.0/lib/slf4j-log4j12-1.5.8.jar!/org/slf4j/impl/StaticLoggerBinder.class]
  SLF4J: Found binding in [jar:file:....../Tomcat%206.0/webapps/Timesheet/WEB-INF/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
  2011-03-31 14:33:48,302 DEBUG com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles:748 - Loading action configurations from: struts-default.xml
  2011-03-31 14:33:50,592 DEBUG com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles:832 - Loaded action configuration from: struts-default.xml
  ...
  2011-03-31 14:33:50,809 DEBUG com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register:202 - Loaded type:com.opensymphony.xwork2.util.XWorkConverter name:struts impl:com.opensymphony
  .xwork2.util.AnnotationXWorkConverter
  Mar 31, 2011 2:33:50 PM org.apache.catalina.core.StandardContext start
  SEVERE: Error filterStart
  Mar 31, 2011 2:33:50 PM org.apache.catalina.core.StandardContext start
  SEVERE: Context [/Timesheet] startup failed due to previous errors
  </code></pre>
  
  <p>I have excluded all jar-conflicts in <code>pom.xml</code>, but it seems to be another <code>slf4j-log4j</code> file in Tomcat lib.</p>
  
  <p>Then I tried to remove the slf4j-log4j12-1.5.8.jar in Tomcat/lib and re-run the war again, but still got another error:</p>
  
  <pre><code>Mar 31, 2011 2:44:51 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
  INFO: validateJarFile(...\Tomcat 6.0\webapps\Timesheet\WEB-INF\lib\servlet-api-2.4.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class:
  javax/servlet/Servlet.class
  ... // Struts file still loaded here, but another Error filterStart: the same as above.
  </code></pre>
  
  <p>Does I miss anything here?</p>
  
  <p><strong>EDIT:</strong> I have remove the redundant servlet-api included in pom.xml: it is accidentally included by another jar. But after excluding that jar I got the error:</p>
  
  <pre><code>Mar 31, 2011 4:11:19 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
  INFO: validateJarFile(...\Tomcat 6.0\webapps\Timesheet\WEB-INF\lib\servlet-api-2.4.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class:
  javax/servlet/Servlet.class
  2011-03-31 16:11:20,234 DEBUG com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles:748 - Loading action configurations from: struts-default.xml
  2011-03-31 16:11:21,028 DEBUG com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles:832 - Loaded action configuration from: struts-default.xml
  </code></pre>
  
  <p>My servlet-api in my Tomcat has version 2.5; the excluded servlet-api.jar in pom.xml has version 2.4.</p>