Chapter 6. Versioning with OSGi and Spring
Java compilers can forewarn you of many flaws present in an application, but when it comes to versioning, compilers know little except the underlying Java platform version being used. This can make class versioning conflicts one of the hardest problems to correct, since they can be discovered only when an application enters Java's runtime.
A compiler can ensure an application has access to Class A, but it is only Java's runtime that will detect that an application relies on two or more versions of Class A. Often version conflicts are so subtle only you can detect them, like minor business logic modifications between versions that are only discoverable after an application is put to use.
Similarly, Java ...