Как использовать класс Java ServiceLoader в Grails? - PullRequest
4 голосов
/ 13 сентября 2010

Я использовал механизм JDK SPI во многих других приложениях без проблем;однако я не могу заставить его работать в Grails.

Я пробовал обычный код (показанный ниже) как из статического инициализатора, так и из конструктора класса, но ни один из них не работал.

ServiceLoader loader = ServiceLoader.load(QueryEngine.class);
Iterator<QueryEngine> it = loader.iterator();

Итератор фактически не выполняет итерацию по реализующим классам.

Я также пытался:

ServiceLoader.load(QueryEngine.class, Thread.currentThread().getContextClassLoader());

, который должен использовать загрузчик классов для текущегокласс, но это тоже не работает.

Есть ли какой-то другой механизм, который я должен использовать для загрузки реализующих классов?

...