在摘要中,我的问题如下:我想从Java Project访问Eclipse插件中包含的类。可能吗?我已将该类包含在插件的“导出包”中,该插件据称是“此插件向客户端公开的所有包”。我的Java项目可以是“客户端”还是只有其他插件可以作为客户端?
更具体地说,我在使用XText时遇到了这个问题。我为一种语言构建了一个编辑器,用这种语言编写的程序以基于文本的格式存储,该格式遵循用XText定义的语法。
我希望我的用户能够编写加载和操作这些基于xtext的文件的Java程序。为此,他们需要访问XText在插件项目中生成的所有类。但是,我无法使用这些类:在使用我的编辑器运行插件的Eclipse实例中,这些类是不可见的。
我如何访问它们?我发现的唯一解决方案是将我的插件导出为jar,然后将其包含在Java项目的Build Path中,在另一个Eclipse实例中,但这听起来并不优雅。
另一种查看此问题的方法如下:我希望某个类可用于在Eclipse实例中构建的任何Java项目,其中加载了某个插件。我该怎么办?
感谢您的帮助。
PS。我正在第一个Eclipse实例中启动第二个Eclipse实例(加载插件的实例)。
答案 0 :(得分:1)
生成XText支持后,您需要通过编辑 MANIFEST.MF 来确保从运行时标签导出每个包。
然后,一旦将插件部署到eclipse中,该eclipse环境就能够看到这些类。
但这只会帮助其他插件开发者。 Java应用程序可以看到类路径中存在的类(例如,如果添加插件jar),但由于大多数eclipse插件依赖于eclipse生命周期才能工作,因此它们的java程序不太可能运行。情况并非总是如此(您可以在没有运行eclipse的情况下使用JFace),但仅适用于专门设计的插件。
如果您的插件已安装,您可以使用* ECLIPSE_HOME *变量创建一个java项目并将插件jar添加为外部jar。如果你的插件是工作区中的一个项目,你可以依赖它(来自java构建路径),就像另一个java项目一样。但由于它是一个插件,可能无法帮助它们运行。