Вы правы, что противоречивые зависимости могут вызвать проблемы.OSGi избегает этого, вычисляя транзитивное закрытие этих зависимостей и гарантируя, что их нет во время разрешения.
Это позволяет вам выставить открытую зависимость, имея внутренние / скрытые частные зависимости и, как следствие, скрытьреализации зависимости, чтобы избежать этого.Хорошо, что все это проверяется во время разрешения Bundle, а не скрывает ошибки времени выполнения.
В частности, в вашем примере, если A и B используют несовместимый интерфейс, а A зависит от B, тогда A не сможет разрешить ошибку зависимости.Так что он даже не сможет начать передавать его несовместимым типом.