【问题标题】:doubts related to plugin development for eclipseeclipse插件开发相关的疑惑
【发布时间】:2013-06-24 23:35:16
【问题描述】:
Eclipse 插件开发非常新。
我已将 jar 项目转换为 eclipse 插件。但我真的不知道,如何利用它。一些基本的疑惑,
- 如何在我们的程序中调用插件中可用的方法??
- 是否应该公开每个公开的方法,以便在我们的程序中使用它?
我的想法类似于一个插件,可以将两个数字相加。用户安装插件并在此插件中调用 add(x,y) 方法。就像从包含的 jar 中调用方法一样。
有很多教程解释了如何创建插件,但我没有找到如何使用。
【问题讨论】:
标签:
java
eclipse
plugins
eclipse-plugin
【解决方案1】:
我认为这就是你所描述的情况......
您有一个希望 Eclipse Java (JDT) 用户安装的插件。在他们的 Java 项目中,您希望他们能够在您的插件中使用一些 Java 类。
在 Java 中,类加载器必须在类路径中找到一个类。 JDT 通过“类路径容器”管理项目的类路径。第一个示例是当您创建 Java 项目时,JDT 将添加“JRE System Library”作为容器。您可以在 Package Explorer 中的项目下看到它。
另一个例子是 JUnit 插件。您会注意到,当您第一次将 JUnit 测试用例添加到 JDT 项目时,会出现一个对话框询问是否将 JUnit 库添加到构建路径。 (这是 JUnit 插件的 New File Wizard 的显式行为。)如果您同意,您将在 Package Explorer 中看到“JUnit 4”容器。
又一个例子:PDE 扩展了 JDT 的功能。当您创建插件项目时,PDE 会添加一个“插件依赖项”容器,它根据您在插件清单中声明的插件依赖项进行管理。
用户可以为自己喜欢的库创建和引用自己的类路径容器。
但是,当然,作为库提供者,您希望像 JUnit 插件一样为他们提供一个。为此,请在您的插件中:
- 添加对 JDT Core 的依赖
- 从此扩展点扩展:org.eclipse.jdt.core.classpathContainerInitializer
如果您希望向导页面创建或编辑类路径容器条目:
- 添加对 JDT UI 的依赖
- 从此扩展点扩展:
org.eclipse.jdt.ui.classpathContainerPage
一些插件使用向导页面来自定义容器(JUnit 允许选择 JUnit 3 或 4);其他人只是使用该页面来提供有关容器的信息。
请参阅 JDT 文档主题 Setting the Java build path 并交叉引用您熟悉的任何示例的源代码。
这是一篇好文章:Simplify Eclipse classpaths using classpath containers
回答您的问题:
- 您必须使用
ClasspathContainerInitializer 的子类的initialize 方法将类添加到类路径中。
- 是的,您希望客户端调用的方法必须是公共的,并且是您添加到类路径中的类的成员。
【解决方案2】:
您所描述的是一个普通的 OSGi 包,没有 Eclipse 特定的功能。就 New Plug-in 向导而言,您的“对 UI 没有任何贡献”。从技术上讲,这意味着它不需要plugin.xml。
您的外部代码感知包的方式就像它是一个普通的 jar:您可以访问它的类、实例化它们并调用它们的方法。或者你可以调用静态方法,就像你习惯的那样。
OSGi 提供的附加层意味着您可以识别您的捆绑包向其用户导出了哪些 Java 包。因此,一个公共的类,但不驻留在导出的包中,其他包无法访问(但这仅适用于 strict 模式;否则您只会收到访问限制警告) .