You might find this topic helpful, particularly the public release of my FieldClassBuilder:
Note that this permits controlled exposure of classes in your module's classloader (normal jar) to any desired system.* namespaces without having to manually construct them when you change jar versions. I use this to accept many different versions of an externally-installed OpenCV jar (due to licensing, it cannot be packaged in a module) but still expose (nearly) all of its member classes.