Есть ли способ компилировать код без знания тела абстрактного класса (только его методы)?
Нет. Чтобы скомпилировать класс, объявленный как
* * 1010
вам нужно иметь B
в исходном формате в исходном пути или в формате .class в пути к классам.
(Если для написания плагина достаточно знать только методы, звучит скорее, что вам нужен интерфейс, чем абстрактный класс.)
Я не хочу усложнять процесс создания плагина.
Предоставление скомпилированного файла .class B
полностью несложно и, вероятно, является лучшей практикой в этом сценарии.
На самом деле, иметь под рукой API через .jar-файл, содержащий соответствующие классы и интерфейсы, вероятно, стандарт.
Чтобы быть ясным:
- Возьмите классы, которые имеют отношение к разработке плагинов, скомпилируйте их и вставьте, скажем,
pluginapi.jar
- Распространите .jar и сообщите разработчикам плагинов, что их плагины должны скомпилироваться, при условии
pluginapi.jar
- Попросите разработчиков плагинов предоставить вам
plugin.jar
(не обязательно включая классы плагинов)
- В вашем приложении убедитесь, что классы API подключаемых модулей присутствуют, например, включив в них путь к классам.
- Загрузка классов плагинов.