2011-05-20 57 views
0

抽象地说,我的问题如下:我想从Java项目访问包含在Eclipse插件中的类。可能吗?我已将该类包含在插件的“导出包”中,该插件据说是“该插件公开给客户的所有包”。我的Java项目能成为“客户端”还是其他插件可以成为客户端?无法从Java项目访问Eclipse插件中的类

更具体地说,我在使用XText时遇到了这个问题。我为一种语言构建了一个编辑器,用这种语言编写的程序以基于文本的格式存储,该格式遵循用XText定义的语法。

我希望我的用户能够编写加载和操作这些基于xtext的文件的Java程序。为此,他们需要访问XText在插件项目中生成的所有类。但是,我还没有能够使用这些类:在使用我的编辑器运行插件的Eclipse实例中,这些类是不可见的。

我该如何访问它们?我发现的唯一解决方案是将我的插件作为jar导出,然后将其包含在Java项目的构建路径中,在另一个Eclipse实例中,但这听起来并不优雅。

查看此问题的另一种方法如下:我想要某个类可用于在某个插件已加载的Eclipse实例中构建的任何Java项目。我该怎么做?

感谢您的帮助。

PS。我从第一个Eclipse实例中启动第二个Eclipse实例(插件被加载的实例)。

回答

1

一旦你生成你的XTEXT支持,需要通过编辑MANIFEST.MF,以确保每包从运行标签出口。

然后,一旦您将插件部署到eclipse中,该eclipse环境将能够看到这些类。

但这只会帮助其他插件开发人员。 Java应用程序可以看到类路径中存在的类(例如,如果添加了插件jar),但由于大多数eclipse插件依赖于eclipse生命周期来运行,所以它们的java程序不可能运行。情况并非总是如此(您可以在没有运行的Eclipse的情况下使用JFace),但仅限于专门为此设计的插件。

如果您的插件已安装,您可以创建一个java项目并使用* ECLIPSE_HOME *变量将插件jar作为外部jar添加。如果您的插件是工作区中的项目,则可以像其他Java项目一样依赖它(从java构建路径)。但由于它是一个插件,可能无法帮助他们运行。

相关问题