在RCP应用程序中使用Groovy-Eclipse插件中的Groovy编辑器

时间:2015-11-05 11:11:00

标签: java eclipse groovy eclipse-rcp

我正在开发一个使用Groovy作为脚本语言的RCP应用程序。我包含了Groovy-Eclipse插件,让应用程序的用户使用Groovy编辑器在应用程序中编写Groovy代码。

Groovy脚本必须使用应用程序中的一些Java类,如何在Groovy编辑器中为这些类添加可见性,以便尽可能透明地为用户提供代码完成等功能。

要执行Groovy脚本,我使用的是GroovyShell,并且我将一个属性添加到传递给GroovyShell构造函数的Binding。

这个属性是我放置一些与我的应用程序相关的对象的地图:

HashMap<String, Object> plx = new HashMap<String, Object>();
plx.put("element", new Element("xxx"));
Binding binding = new Binding();
binding.setProperty("plx", plx);

想象一下,Element是以这种方式定义的Java类

class Element
{
  String name;
  public Element(String name)
  {
    this.name = name;
  }
  public String getName()
  {
    return name;
  }
 }

我可以编写并执行以下Groovy脚本,没有问题

println plx.element.name

我得到了正确的结果:xxx

我遇到的问题是我不知道如何修改编辑器使用的类路径,让我解析Element类以在我的应用程序中编辑脚本时启用代码完成。

1 个答案:

答案 0 :(得分:1)

是否要在每次执行RCP中的脚本时启动新VM,或者是否要在当前运行RCP的同一VM中运行Groovy脚本。你的问题对我来说有点过于通用......如果是后者,请确保已将Java类添加到插件依赖项中,否则在运行时只会在编译时解析它。

如果您想在没有在脚本中明确导入类的情况下使用您的类,则可以透明地添加导入。 http://www.jroller.com/melix/entry/customizing_groovy_compilation_process

您还可以通过绑定将任何服务或实例注入脚本。它基本上是关键值的映射。

一旦您的Java类在类路径上,内容辅助将在您的脚本中可用。如果您需要在内容辅助提案中进一步自定义,请查看此精彩帖子以获取有关实际实施的更多详细信息。 http://contraptionsforprogramming.blogspot.de/2009/12/extending-groovy-eclipse-for-use-with.html

希望这有帮助。