2011-12-28 1 views
1

Я хотел бы сделать некоторый импорт моих собственных классов для использования внутри сценария DSLD, но компиляция DSLD, похоже, не использует путь к объекту проекта - операторы импорта ломают компиляцию, а Class.forName исключает исключение класса. Есть ли способ поставить пользовательские банки в DSpath classpath, чтобы я мог использовать свои собственные классы внутри блоков conribution? Я использую Eclipse 3.7 и последний плавный плагин (2.6.0)Как изменить путь класса DSLD для компиляции в Eclipse

ответ

0

Я не знаю много о вещах DSLD, но это looks, как у Groovy, возможно, есть собственные средства для этого.

+0

Это общий доступ к глобальным DSLD среди ваших проектов, и он предназначен только для файлов DSLD. Что мне нужно - это способ зацепить еще раньше в компилятор плагина eclipse, который компилирует сценарии DSLD. Я получил некоторые результаты, динамически добавляя URL-адрес в sysetmClassLoader непосредственно в сценарии DSLD, но мне интересно, есть ли более чистый способ сделать это –

2

Вы можете просто передать строку с полным именем класса и до тех пор, пока она находится на пути к классам проектов, где оценивается DSLD, тогда она будет работать. Это описано здесь groovy-eclipse DSLDs

Некоторые тонкости о java.lang.Class ссылки

Даже если сценарий DSLD редактируется в контексте вашего проекта, сценарий на самом деле загружается Groovy-Eclipse. Таким образом, путь класса сценария выполнения сценария соответствует пути класса Groovy-Eclipse , а не пути к классу вашего проекта.

Следовательно, вы не можете ссылаться на объекты класса для типов, определенных в вашем проекте. Однако вы можете ссылаться на объекты класса , доступные Groovy-Eclipse. Это может сбивать с толку, поскольку компилятор не будет отображать ошибки компиляции, если типы, определенные в вашем проекте , называются объектами класса, но будут отображаться ошибки компиляции , когда ссылки на типы Groovy-Eclipse ссылаются. Это связано с тем, что компилятор Groovy-Eclipse работает от пути к классу проекта. Это пока не известно, что файлы DSLD будут запускаться с другим пулом классов.

Более конкретно:

Вместо ссылки на класс MyLocalType напрямую, вы можете ссылаться на него как строка «com.mycompany.MyLocalType» Стандарт JDK, ГДК, и все типы, определенные в заводной-все они доступны непосредственно в вашей DSLD и покажет ошибки компиляции. В пакетах, начиная с org.eclipse.jdt, можно ссылаться на типы . и org.codehaus.groovy.eclipse. если все ссылки полностью квалифицированы. Однако, это не рекомендуется, если вы действительно не знаете, что вы делаете .

Смежные вопросы