Spring jars in tomcat lib folder

I will try to explain what I know.

When you deploy a WAR on your tomcat, the class loading will happen this way :

  1. look for the class to load in your WAR classLoader
  2. if not found move to parent (tomcat /lib folder)

What happen in your case is that spring also have a lot of dependencies, if you package it in your war, its dependencies would have been packaged as well and everything would have worked fine. But since you defined spring as provided, all its dependencies are considered provided as well, and when you put it in /lib folder, spring is accessible, but its dependencies are not.

What you need to do is put all spring dependencies and the dependencies of dependencies (etc.) in lib folder as well. Another solution is to define an intermediary WAR in your classloading hierarchy which will contains all your common libs.