我正在開發一個使用Groovy作爲腳本語言的RCP應用程序。我包含了Groovy-Eclipse插件,讓應用程序用戶使用Groovy編輯器在應用程序中編寫Groovy代碼。在RCP應用程序中使用Groovy-Eclipse插件中的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);
試想一下,元素是這樣
class Element
{
String name;
public Element(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
}
我能寫並執行以下定義的Java類Groovy腳本沒有問題
println plx.element.name
我得到正確的結果:xxx
我遇到的問題是我不知道如何修改編輯器使用的類路徑,讓它在我的應用程序中編輯腳本時解析Element類以啓用代碼完成。
感謝@kittaakos爲您的迴應。我剛剛編輯了我的問題,以澄清它。我的問題不在於運行時間,而是編輯時間。 –
全部清楚,這是由[groovy推理引擎]完成的(http://contraptionsforprogramming.blogspot.de/2009/11/how-type-inferencing-for-groovy-in.html)。您可以創建自己的實現並將其插入到RCP中。我有這種感覺,你必須手動實現它。至少我現在沒有更好的想法了。這不是火箭科學,它只是需要一些努力才能完成。也尋找
org.eclipse.jdt.groovy.core.typeLookup
延伸點。 – kittaakos非常感謝,我會按照你的建議。 –