`requires static` versus service binding

Alan Bateman alan.bateman at oracle.com
Wed Jan 8 18:25:29 UTC 2025


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/jigsaw-dev/attachments/20250108/04e1df26/attachment.htm>


More information about the jigsaw-dev mailing list