У меня есть приложение, которое я хотел бы сделать расширяемым, позволяя пользователям определять классы в Groovy, в конечном итоге реализуя некоторые интерфейсы.
Ключевым аспектом является то, что его следует интерпретировать/компилировать во время выполнения. То есть Мне нужно мое приложение, чтобы взять .groovy
и скомпилировать его. Выполнение этого при загрузке в порядке.
Тогда, конечно, мое приложение должно иметь возможность создать экземпляр этого класса.
Я вижу два решения:
1) Скомпилируйте во время запуска приложения, поместите классы где-нибудь в путь к классам, а затем просто загрузите классы, притворившись, что они всегда там.
2) Какой-то более разумный способ - вызов API компилятора и некоторая магия для загрузки классов, чтобы увидеть, как мой системный загрузчик классов видит их.
Как мне выбрать вариант 2)?
Любые другие идеи?