On 07-Jan-21 11:01, Alan Bateman wrote:
On 06/01/2021 23:49, Johannes Kuhn wrote:
Indeed a bug.
Happens under the following conditions:
* Patched module is an automatic module
* Patch adds one or more additional packages to the module.
:
Proposed fix:
* Change requires to not check if it is an automatic module if the
builder is not strict.
* Move the copying of the requires out of the if.
Thanks for the mails, it is bug. The additional information that the
patch adds packages to the automatic module was important to understand
the mails. One other thing is that the bug does not surface when the set
of root modules includes an explicit module or an unpatched automatic
module. So very obscure scenario that probably explains why there hasn't
been reported before now.
The patcher should be using strict mode when re-building the module
descriptor for a patched automatic modules. The non-strict mode is for
explicit modules as the identifiers (that may not be valid in the Java
Language) are read from the module-info.class. I'll create a bug for this.
Even better fix.
To be honest - I don't quite understand the bug - but I was able to
reproduce it.
So I did manually retrace the code to see where the difference was
happening, and found the lines above - which was "good enough" for an
explanation.
Is there a way to debug the early java initialization? I didn't got that
working, so had to do it by hand.
-Alan.
- Johannes