To avoid library version conflicts at component level we must have a minimum number of libraries in the system classloader. When a class was loaded by the system classloader all inherithed classloaders can't load another version of the class even if provided by the component classloader. So, if a component requires another version of slf4j-api or slf4j-jdk14, that will not work. In the past, we have already have this library version conflict problem.
The space saved is not a problem. Petals ESB does not consume a lot of memory.
In the system class loader, just put librairies required by petals bootstrap. If a container library requires another library that is not in the system classloader, put it in the container class loader, even if this library can be used by components. Same for JBI components.
This can be marked as fixed. Further changes to the system classpath can have their own issues in the future.