簡體   English   中英

在RCP應用程序中使用Groovy-Eclipse插件中的Groovy編輯器

[英]Using the Groovy editor from the Groovy-Eclipse plugin in an RCP application

我正在開發一個使用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類以啟用代碼完成功能。

您是要在每次在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

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM