У меня странная проблема с Guice, не использующим явную привязку, определенную в модуле Guice.Это простое сопоставление интерфейса с классом.
Я проследил за этим через отладчик и могу видеть в InjectorImpl.findBindingsByType (), что привязка MultiMap содержит соответствующую привязку.Однако он возвращает ноль, а затем выдает исключение, что ни одна реализация не связана (см. Ниже).Связанный тип - это интерфейс, поэтому он не может создать новый без использования привязки.
1) No implementation for org.example.module.approval.ApprovalController was bound.
Did you mean?
org.example.module.approval.ApprovalController bound at org.example.module.ApBaseModule.configure(ApBaseModule.kt:88)
org.example.module.approval.ApprovalControllerImpl bound at org.example.module.approval.ApprovalControllerImpl.class(Unknown Source)
while locating org.example.module.approval.ApprovalController
for the 1st parameter of org.example.module.invoices.delegates.BeginApprovalDelegate.<init>(Unknown Source)
while locating org.example.module.invoices.delegates.BeginApprovalDelegate
Я пытался использовать инструмент «Выражение выполнения» в отладчике для вызова методов equals в TypeLiteral и записи MultiMap, которой он должен соответствовать.Это возвращает ложь.Однако я не могу понять, почему.Интересно, что если я вызываю toString для каждого и проверяю равенство, оно возвращает true.
JavaDocs, которые я обнаружил, не определяет критерии равенства для литерала типа, и я изо всех сил стараюсь следовать логике в источнике Guice.Что это тестирует помимо конического названия класса?Приходит ли в него загрузчик классов?
Причина, по которой я спрашиваю, заключается в том, что созданный класс хранится в отдельном «подключаемом» фляге, который мое приложение загружает через загрузчик дочерних классов при запуске.Так что это загрузчик классов, отличный от большинства приложений.
Будем весьма благодарны за любые предложения относительно того, где искать дальше.