On 11/03/2017 15:12, Michael Rasmussen wrote:

Yes, you are correct that the current implementation doesn't update
the classloader's mapping of package -> module.

But I did a quick and dirty test/hack, calling addPackage on the
Module, and then registering the package in the classloader.
After that, Class.forName successfully loaded the class, it was
defined in to the correct module, and it could access non-exported
members of that module!

Adding packages dynamically (which is just one part of dynamically evolving a module) would touch several areas. Introducing a class loader capability is just one, there are also several issues around resources and resource encapsulation. There are issues around doing this atomically and of course all the same error cases that creating a layer has to deal with. In all, this is beyond what Instrumentation.defineModules was intended to do.

-Alan

Reply via email to