Мы создаем программу, которая строит логические схемы и использует механизмы Lookup и ServiceProvider платформы NetBeans для получения всех доступных логических элементов на палитре пользовательского интерфейса.
Модель (MVC) имеет класс BasicElement, который является ServiceProvider всех элементов. Этот класс общедоступен, его пакет публично экспортируется, и модуль View зависит от него. Модуль View знает только об этом модуле Model. Когда кто-то добавляет новый модуль с набором элементов, аннотированных с помощью @ServiceProvider, View загружает в палитру новые элементы, найденные с помощью Lookup. Затем пользователь может добавить элементы из палитры на сцену, создать несколько схем и сохранить (сериализовать) их.
Проблема в том, что когда программа пытается открыть сохраненный файл (десериализовать элементы), возникает исключение. Потому что ни один модуль не знает (не зависит) о модулях с элементами (и пакеты в этих модулях не могут быть экспортированы публично). Элементы только аннотируются и этого достаточно, чтобы они попали к пользователю.
Есть ли возможность без каждый раз добавления зависимости от новых модулей с элементами десериализации тех. Или вообще есть способ десериализовать объекты класса, которые скрыты за классом ServiceProvider.