Как ServiceLoader.load работает с загрузчиками классов в JPMS? - PullRequest
2 голосов
/ 10 апреля 2020

У меня есть два слоя JPMS:

  1. Загрузочный слой с module A, загруженный ClassLoaders$AppClassLoader@4fca772d
  2. Дочерний слой с module B, который предоставляет услуги и загруженный Loader@6b58b9e9

Родительский загрузчик классов Loader@6b58b9e9 - ClassLoaders$AppClassLoader@4fca772d.

В module A У меня есть следующий код:

ServiceLoader<ModuleAInterface> sl = ServiceLoader.load(ModuleAInterface.class);

Однако службы Module B встречаются только тогда, когда загрузчик класса контекста равен Loader@6b58b9e9, и не обнаруживаются, когда загрузчик класса контекста ClassLoaders$AppClassLoader@4fca772d.

. Вопрос - можно ли получить услуги module B в module A не зная загрузчик классов module B в такой конфигурации.

...