`requires static` versus service binding

Josiah Noel josiahnoel at gmail.com
Wed Jan 8 18:39:41 UTC 2025


We also raised the same issue a while back.

 https://mail.openjdk.org/pipermail/jigsaw-dev/2023-April/date.html#14853

A possible solution that was discussed was to have a mechanism to have
multiple modules in a single jar. (But obviously that hasn't been
implemented yet)

We managed to solve it in our library via a circular plugin dependency.
(Library A has a dependency on Plugin B which depends on an older version
of library A to provide A's functionality to Library C)

It's pretty painful to setup/modify, but if you don't expect the spi
implementation to change that much it works I guess.

Even so I also wish there was an easier way to provide optional services so
we don't have to go through that whole circular song and dance.

On Wed, Jan 8, 2025, 12:58 PM David Lloyd <david.lloyd at redhat.com> 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.
>
> The current behavior is inconsistent between compile and run time, and
> should be revisited.
> --
> - DML • he/him
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/jigsaw-dev/attachments/20250108/1da25b83/attachment.htm>


More information about the jigsaw-dev mailing list