我想在DSLD脚本中导入我自己的类,但是DSLD编译似乎没有使用项目的类路径 - import语句会破坏编译,而Class.forName会抛出class not found异常。 有没有办法将自定义jar放在DSLD类路径上,所以我可以在conribution块中使用自己的类? 我正在使用Eclipse 3.7和最新的groovy插件(2.6.0)
答案 0 :(得分:1)
您只需传递一个包含完全限定类名的字符串,并且只要它在正在评估DSLD的项目类路径上,那么它就可以工作。这里描述groovy-eclipse DSLDs
关于java.lang.Class引用的一些细微之处
即使在您的上下文中编辑DSLD脚本也是如此 项目,该脚本实际上是由Groovy-Eclipse加载的。所以, 脚本的运行时类路径对应于Groovy-Eclipse classpath,而不是项目的类路径。
因此,您无法为其中定义的类型引用类对象 你的项目。但是,您可以引用类对象 可用于Groovy-Eclipse。这可能会令人困惑 编译器在您的类型中定义的类型时不会显示编译错误 project被引用为类对象,但它将显示编译 引用Groovy-Eclipse类型时出错。这是因为 Groovy-Eclipse编译器在项目的类路径下工作。它是 尚未意识到DSLD文件将使用不同的类路径运行。
更具体地说:
您可以直接引用MyLocalType类,而不是直接引用类MyLocalType 引用它作为字符串“com.mycompany.MyLocalType”标准JDK, GDK以及groovy-all中定义的所有类型都可以直接使用 您的DSLD并将显示编译错误。有可能参考 以org.eclipse.jdt开头的包中的类型。和 org.codehaus.groovy.eclipse。如果所有参考文献都完全合格。 但是,除非你真的知道自己是什么,否则不建议这样做 做。
答案 1 :(得分:0)
我对DSLD的东西知之甚少,但是像Groovy这样的looks可能有它自己的方法。