On 14.04.20 19:38, Alex Buckley wrote: [...]
It's fine for Library1 to require SharedApi, and for Library2 to require SharedApiImpl, but if the exported packages overlap, then it's not fine for Project to require, indirectly, both SharedApi (via Library1) and SharedApiImpl (via Library2). That is, SharedApi and SharedApiImpl are not composable.
And what do you do when you are in that situation?
If you had put them both on the classpath in JDK 8, then you would have had a broken system. If you want to compose an application that includes both, then one of them has to change. There is no need to speak of "transitive" modules because `requires transitive` has not entered the picture.
Without the module system I can just exclude one and be fine. With module system I get into a split package problem adn have not found a real solution yet bye Jochen