First of all, I want to mention an open-source project that could help in doing so: Classworlds
Then the problem is maybe even more complex than this. In J2EE or any multi-threaded, hot-deployable system, the classloading is done via thread context classloaders which are often out of application control. These classloaders do not always support dependencies defined at the jar manifest classpath level.
But the root problem of all this is that the version of a jar file does not really qualify the class that has been loaded.
Using classloaders is a possible way of doing it maybe combined with dependency injection is even better.