The jlink tool can be used to assemble a set of
modules (and their dependences) into a custom runtime image for a
different OS, architecture or JDK version to the JDK containing the
jlink tool. This is sometimes referred to as "cross
linking".
The version checking used when cross linking is changed to be
more strict than in previous releases. When cross linking, the set
of standard and JDK modules for the custom runtime must exactly
match the version and vendor of the JDK containing the
jlink tool. This strict checking is necessary due to
the pipeline of jlink plugins that transform and
optimize the classes and resources that go into the image. The
jlink cannot reliably generate a run-time image when
they don't match exactly.
In previous releases the version checking was less strict and
allowed jlink running on JDK $N.0.$U from vendor $X
create a run-time image from a set of modules for JDK $N.0.$V from
vendor $Y. The strict checking means that the value of $U and $V
must be equal, and that $X and $Y be equal.