首页 文章

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

提问于
浏览
0

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

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

要执行Groovy脚本我使用的是GroovyShell,我向Binding添加了一个属性,该属性被传递给GroovyShell构造函数 .

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

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 回答

  • 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

    希望这可以帮助 .

相关问题