ClassCastException for Interface and implementing class or for same class
Problem: In a multimodular project, where multiple modules use the same libraries, you run into ClassCastExceptions for the same class or for interface and correctly implementing class.
Solution: Do not add required libraries to each module separately.
Instead, wrap all libraries into a dedicated module from which you reexport all packages.
Additional information: Each module uses it’s own classloader.
During runtime, the identity of a class is not only defined by its fully qualified classname but by it’s class loader as well, which is why “identical” classes loaded by different class loaders cause ClassCastExceptions.