我正在开发一个RCP应用程序,它使用Groovy作为脚本语言。我包含了Groovy Eclipse插件,让应用程序的用户使用Groovy编辑器在应用程序中编写Groovy代码。
Groovy脚本必须使用应用程序中的一些Java类,我如何在Groovy编辑器中为这些类添加可见性,以尽可能透明地为用户提供代码完成等功能。
要执行Groovy脚本,我使用GroovyShell,并将一个属性添加到传递给GroovyShell构造函数的绑定中。
此属性是一个映射,我在其中放置了一些与我的应用程序相关的对象:
HashMap<String, Object> plx = new HashMap<String, Object>();
plx.put("element", new Element("xxx"));
Binding binding = new Binding();
binding.setProperty("plx", plx);
假设元素是这样定义的Java类
class Element
{
String name;
public Element(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
}
我可以毫无问题地编写和执行以下Groovy脚本
println plx.element.name
我得到了正确的结果:xxx
我的问题是,我不知道如何修改编辑器使用的类路径,让它解析元素类,以便在我编辑应用程序中的脚本时实现代码完成。
您是希望每次在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
希望这有帮助。
问题内容: 为了使用JDK 5中引入的检测功能,可以使用传递给JVM 的标志。这会将Instrumentation类的实例注入到静态方法中。例如在这样的类中: 使用适当的清单文件,可以按以下方式运行它: 然后从调用premain方法。Java.SizeOf项目中使用此方法来猜测Java对象的近似大小。 好的,现在在Eclipse RCP中,每个捆绑软件都有自己的类加载器。这意味着我们存储在MyCl
我正在开发一个Eclipse4 RCP应用程序。我对某些部分和一个编辑有一个观点。编辑器的目的是打开、编辑和保存一个字符串。 编辑完编辑器的内容后,如何将其保存成字符串?当使用文件时,编辑器将其内容直接保存到文件中。
Eclipse 4 RCP应用程序支持浮动编辑器窗口。 使用兼容性层,我将一组RCP应用程序从Eclipse 3.8移植到Eclipse 4.4。这些应用程序不是为浮动编辑器设计的。我想把重新设计的费用推迟到以后。 在注释40中,浮动编辑器窗口的Eclipse增强请求提到了控制编辑器窗口策略的可取性: 在e4中,理想情况下,我们能够在布局的任何地方“托管”当前的编辑器或视图。将其位置限制在编辑器区
Android Studio中我的应用程序的可以编辑,但编辑完文本后,退出窗口时将不会保存。怎么办?
我已经创建了一个锅炉板项目,遵循vogella的广泛Tycho教程。 事实: < li >没有功能,也没有插件。唯一的插件是RCP应用程序,这也是入口点。 问题: > 我不知道哪个<code>pom。xml是否包含第三方依赖项。 我不能将它们包含在RCP项目中,因为pom的打包是< code>eclipse-plugin,而不是< code>jar。据我所知,如果我将打包改为< code>jar,
我使用带有兼容性层的Eclipse4.2来重用我的RCP应用程序的现有部分。 我希望在我的RCP应用程序中重用New from File菜单和Run菜单,为此我打开Eclipse的EMF编辑器,其外观如下所示: 但是对于新菜单,它显示如下内容: