Я пытаюсь расширить компоновщик кода Eclipse (для создания DTO из Hibernate VO) - и он использует Groovy для своей системы шаблонов.
Код, который он использует для создания скрипта Groovy, немного странный (не то, что я вижу в документах Groovy), но в основном он работает:
GroovyShell shell = new GroovyShell();
script = shell.parse(source);
Затем, позже:
Binding binding = (bindings == null ? new Binding() : new Binding(bindings));
Script scriptInstance = InvokerHelper.createScript(script.getClass(), binding);
scriptInstance.setProperty("out", out);
scriptInstance.run();
out.flush();
Теперь, это работает просто отлично, пока не попадет на ссылку на объект, которого нет непосредственно в проекте. В сценарии он просматривает свойства класса, который он обрабатывает - когда он это делает, Groovy просматривает все методы и, когда ему не удается найти определение класса для одного из параметров метода, он обнуляется. В этом случае он умирает, когда находит какие-либо ссылки на Hibernate, но я уверен, что это принесет гораздо больше пользы. Ему ничего не нужно делать, но он не может жить, не зная, кем они являются.
Скрипт , по-видимому, не имеет загрузчика классов, чтобы я мог предоставить любую информацию о пути к классам, поэтому я попытался предоставить его в GroovyShell - без разницы.
Как правильно исправить это, чтобы интерпретатор Groovy мог найти мои проекты, на которые ссылаются Jars?