I sometimes facing dependency hell in Java. It is common known problem: library A depends on library C in version 2.5 and library B depends on C too, but in version 2.6. Then I have to solve question: Are two versions of C library backward compatible? Can I use libraries A, B and C in one application classpath? Or should I create "shaded bundle" of A with old version of C?
If two versions of C library are incompatible and I use it, application can be started usually. But then after some hours or days can "no such method" exception occurs! I would like to detect this problem before application start, not in runtime.
Question is: Exist some tool that can list all used symbols in class and all provided symbols by class? Then I can create script that detect used but missing symbols...