On 08/01/2025 17:57, David Lloyd wrote:
It is not uncommon for a library to contain a provider for a service
where the service resides in an optional dependency. It is also
sometimes desirable to use a service from an optional dependency.
In JPMS, we can use `requires static` to indicate that the library
will function without the dependency being present. We can declare
that we use or provide a service from the optional dependency.
Compilation will complete successfully in this case, because the
descriptor is valid.
However, at run time, the module will fail to resolve if any provider
or uses comes from a module that is not present when the layer is
resolved. This is not desired behavior, because the user has already
opted in to and indicated that the dependency in question is optional,
and should not cause a run time problem if not present.
You can find previous discussion on this topic in JDK-8299504 [1] and
this mailing list [2].
-Alan
[1] https://bugs.openjdk.org/browse/JDK-8299504
[2]
https://mail.openjdk.org/pipermail/jigsaw-dev/2023-April/thread.html#14846