2011-12-28 50 views
1

我想做一些导入我自己的类,以便在DSLD脚本中使用,但DSLD编译似乎不使用项目的类路径 - 导入语句会破坏编译,而Class.forName抛出类未发现异常。 有没有办法将自定义JAR放在DSLD classpath中,所以我可以在配置块中使用自己的类? 我正在使用Eclipse 3.7和最新的Groovy插件(2.6.0)如何在Eclipse中更改DSLD编译类路径

回答

0

我不太了解DSLD的东西,但它喜欢Groovy looks可能有它自己的手段做到这一点。

+0

这是一个共享您的项目之间的全球DSLD,它只适用于DSLD文件。我需要的是一种更早挂钩进入DSLD脚本编译的eclipse插件编译器的方法。我通过直接在DSLD脚本中动态添加URL到sysetmClassLoader获得了一些结果,但我想知道是否有一些更干净的方法可以做到这一点 – 2011-12-28 13:33:13

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, GDK和中定义的所有类型的Groovy的所有可用直接在您的DSLD的 中,并且会显示编译错误。可以在以org.eclipse.jdt开头的包中引用 类型。和org.codehaus.groovy.eclipse中的 。如果所有引用都完全合格。 但是,除非你真的知道你在做什么 ,否则不建议这样做。