A correction
"OSGi, which allows risky concurrent use of different versions of a library."
An OSGi bundle specifies what dependency it uses, down to its version / range, so one bundle is not using multiple versions of the same dependency at the same time, as your post is suggesting.
Each OSGi bundle gets its own Class Loader, there is no "cross contamination" between them.