Eclipse插件开发二:初识hello word的配置信息

news/2025/1/17 5:43:26/

在之前的文章中,我们创建了一个例子,现在我们来认识这个例子。
Eclipse插件开发一:hello word
以下是目录结构,主要有一个java类,一个MANIFEST.MF配置,一个plugin.xml配置
在这里插入图片描述

1.MANIFEST.MF

MANIFEST.MF 文件的主要作用是提供插件的元数据,使得 Eclipse 平台能够正确加载和管理插件。它定义了插件的基本信息、依赖关系和执行环境要求,确保插件在运行时能够找到所需的资源和其他插件。

通过MANIFEST.MF中配置的这些信息,Eclipse 可以在启动时识别插件,处理插件之间的依赖关系,并确保在合适的 Java 环境中运行插件。

通过查看MANIFEST.MF代码信息,我们可以看到完整的配置信息
在这里插入图片描述
以下是各配置的介绍。

java">Manifest-Version: 1.0指定了清单文件的版本,通常为 1.0Bundle-ManifestVersion: 2指定了该插件的清单版本。版本 2OSGi(开放服务网关倡议)规范的一部分,表示该插件支持 OSGi 的特性。Bundle-Name: Hello插件的名称,通常用于用户界面中显示。Bundle-SymbolicName: com.hutao.hello;singleton:=true插件的符号名称,唯一标识该插件。singleton:=true 表示该插件是单例的,即在同一时间只能有一个实例。Bundle-Version: 1.0.0.qualifier插件的版本号,通常遵循语义版本控制(MAJOR.MINOR.PATCH)。qualifier 表示该版本可能是一个开发版本或快照版本。Bundle-Vendor: HUTAO插件的供应商信息,通常是开发者或组织的名称。Require-Bundle: org.eclipse.ui指定该插件所依赖的其他插件。在这里,org.eclipse.ui 是一个必需的依赖,表示该插件需要 Eclipse UI 插件才能正常工作。Automatic-Module-Name: com.hutao.hello指定了自动模块名称,用于 Java 9 及以上版本的模块系统。这使得该插件可以作为一个模块被其他模块引用。Bundle-RequiredExecutionEnvironment: JavaSE-1.8指定了插件所需的执行环境为Java SE 1.8 

在里面,我们经常进行使用的一个配置是Require-Bundle,这里用来管理我们开发中所用到的依赖。例如这个案例中,用到了org.eclipse.ui。
在这里插入图片描述
在边选择add按钮,即可添加对应的依赖进去(这个依赖是eclipse开发集成环境提供的,如果你要的依赖不在这里面,则需要你单独引入你的依赖)
在这里插入图片描述

2.plugin.xml

以下是完整代码,第一看,看是挺懵的,看着挺多。其实很好理解,整个配置文件主要分成了4部分。分别是命令、处理器、快捷键、菜单。也就是下面刚好有四个extension。

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin><extensionpoint="org.eclipse.ui.commands"><categoryid="com.hutao.hello.commands.category"name="Sample Category"></category><commandcategoryId="com.hutao.hello.commands.category"name="Sample Command"id="com.hutao.hello.commands.sampleCommand"></command></extension><extensionpoint="org.eclipse.ui.handlers"><handlerclass="com.hutao.hello.handlers.SampleHandler"commandId="com.hutao.hello.commands.sampleCommand"></handler></extension><extensionpoint="org.eclipse.ui.bindings"><keycommandId="com.hutao.hello.commands.sampleCommand"schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"contextId="org.eclipse.ui.contexts.window"sequence="M1+6"></key></extension><extensionpoint="org.eclipse.ui.menus"><menuContributionlocationURI="menu:org.eclipse.ui.main.menu?after=additions"><menuid="com.hutao.hello.menus.sampleMenu"label="Sample Menu"mnemonic="M"><commandcommandId="com.hutao.hello.commands.sampleCommand"id="com.hutao.hello.menus.sampleCommand"mnemonic="S"></command></menu></menuContribution><menuContributionlocationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions"><toolbarid="com.hutao.hello.toolbars.sampleToolbar"><commandid="com.hutao.hello.toolbars.sampleCommand"commandId="com.hutao.hello.commands.sampleCommand"icon="icons/sample.png"tooltip="Say hello world"></command></toolbar></menuContribution></extension>
</plugin>

2.1.定义命令

<!--定义命令-->
<!--在 org.eclipse.ui.commands 扩展点中定义了一个命令定义命令:Sample Command定义命令的所属类别:Sample Category
-->
<extensionpoint="org.eclipse.ui.commands"><categoryid="com.hutao.hello.commands.category"name="Sample Category"></category><commandcategoryId="com.hutao.hello.commands.category"name="Sample Command"id="com.hutao.hello.commands.sampleCommand"></command>
</extension>

2.2.定义处理器

所谓处理器,就是定义一个类来处理我们上面定义的命令。例如,上述我们定义的命令唯一标识:com.hutao.hello.commands.sampleCommand,这个命令被触发的时候,将会调用这个类com.hutao.hello.handlers.SampleHandler
即命令和处理器,是存在关联的。

<!--定义命令处理器-->
<!--在 org.eclipse.ui.handlers 扩展点中注册了一个处理器类,即SampleHandler类并且SampleHandler这个类将处理对应的命令
-->
<extensionpoint="org.eclipse.ui.handlers"><handlerclass="com.hutao.hello.handlers.SampleHandler"commandId="com.hutao.hello.commands.sampleCommand"></handler>
</extension>

2.3.定义快捷键

就是将我们定义的命令,在eclipse中,放一个快捷键。

<!--定义快捷键-->
<!--在 org.eclipse.ui.bindings 扩展点中定义了一个快捷键指定了与 sampleCommand 相关联的快捷键,这里是 M1+6(通常表示 Ctrl + 6)
-->
<extensionpoint="org.eclipse.ui.bindings"><keycommandId="com.hutao.hello.commands.sampleCommand"schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"contextId="org.eclipse.ui.contexts.window"sequence="M1+6"></key>
</extension>

快捷按钮 Ctrl + 6
在这里插入图片描述

2.4.定义菜单

跟定义快捷键一个意思,就是在菜单栏定义一个菜单。

<!--定义菜单-->
<!--在 org.eclipse.ui.menus 扩展点中定义了菜单和工具栏
-->
<extensionpoint="org.eclipse.ui.menus"><!--在菜单中添加了一个命令,允许用户通过菜单执行 sampleCommand--><menuContributionlocationURI="menu:org.eclipse.ui.main.menu?after=additions"><menuid="com.hutao.hello.menus.sampleMenu"label="Sample Menu"mnemonic="M"><commandcommandId="com.hutao.hello.commands.sampleCommand"id="com.hutao.hello.menus.sampleCommand"mnemonic="S"></command></menu></menuContribution><!--在工具栏中添加了一个命令按钮,带有图标和提示信息--><menuContributionlocationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions"><toolbarid="com.hutao.hello.toolbars.sampleToolbar"><commandid="com.hutao.hello.toolbars.sampleCommand"commandId="com.hutao.hello.commands.sampleCommand"icon="icons/sample.png"tooltip="Say hello world"></command></toolbar></menuContribution>
</extension>

下图结果为快捷键
在这里插入图片描述
下图结果为菜单。
在这里插入图片描述

3.SampleHandler

下面的这个类的主要功能是在 Eclipse 中执行一个命令时弹出一个信息对话框。

AbstractHandler,这是 Eclipse 插件开发中用于处理命令的基类。

java">import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.handlers.HandlerUtil;
import org.eclipse.jface.dialogs.MessageDialog;public class SampleHandler extends AbstractHandler {//execute 方法是 AbstractHandler 中定义的抽象方法,必须被实现。这个方法在命令被触发时调用。@Overridepublic Object execute(ExecutionEvent event) throws ExecutionException {//获取当前工作窗口IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);//弹出信息对话框MessageDialog.openInformation(window.getShell(),"Hello","Hello, Eclipse world");return null;}
}

相信到这里,你应该差不多了解开发eclipse的插件。


http://www.ppmy.cn/news/1563806.html

相关文章

19. 删除链表的倒数第 N 个结点【力扣】

删除链表的倒数第 N 个结点 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&…

【网络云SRE运维开发】2025第3周-每日【2025/01/15】小测-【第14章ospf高级配置】理论和实操解析

文章目录 14.1 选择题解题思路和参考答案14.2 理论题解题思路和参考答案14.3 实操题解题思路和参考答案思科&#xff08;Cisco&#xff09;设备华为&#xff08;Huawei&#xff09;设备小米/锐捷&#xff08;或其他支持标准CLI命令的设备&#xff09;通过网络管理工具注意事项 …

【15】Word:互联网发展状况❗

目录 题目​ NO2 NO3 NO4 NO5 NO6 NO7.8.9 NO7 NO8 NO9 NO10 题目 NO2 布局→页面设置→纸张&#xff1a;A4→页边距&#xff1a;上下左右→版式&#xff1a;页眉/页脚页码范围&#xff1a;多页&#xff1a;对称页边距→内侧/外侧→装订线 NO3 首先为文档应用内置…

太速科技-402-基于TMS320C6678+XC7K325T的高性能计算核心板

基于TMS320C6678XC7K325T的高性能计算核心板 一、板卡概述 本板卡系我公司自主研发&#xff0c;采用一片TI DSP TMS320C6678和一片Xilinx公司K7系列FPGA XC7K325T-2FFG900-I作为主处理器&#xff0c;Xilinx 的Spartans XC3S200AN作为辅助处理器。其中XC3S200AN负责管理板…

无限世界中的具身导航与交互!InfiniteWorld:通用视觉语言机器人交互的统一仿真框架

作者&#xff1a;Pengzhen Ren, Min Li, Zhen Luo, Xinshuai Song, Ziwei Chen, Weijia Liufu, Yixuan Yang, Hao Zheng, Rongtao Xu, Zitong Huang, Tongsheng Ding, Luyang Xie, Kaidong Zhang, Changfei Fu, Yang Liu, Liang Lin, Feng Zheng, Xiaodan Liang 单位&#xff…

【初阶数据结构】序列系统重构:顺序表

文章目录 1.线性表2.顺序表2.1 概念及结构2.1.1 静态顺序表2.2.2 动态顺序表 2.2 接口实现2.2.1 顺序表打印2.2.2 顺序表初始化2.2.3 顺序表销毁2.2.4 顺序表容量检查2.2.5 顺序表尾插2.2.6 顺序表头插2.2.7 顺序表尾删2.2.8 顺序表头删2.2.9 顺序表在pos位置插入x2.2.10 顺序表…

卷积神经05-GAN对抗神经网络

卷积神经05-GAN对抗神经网络 使用Python3.9CUDA11.8Pytorch实现一个CNN优化版的对抗神经网络 简单的GAN图片生成 CNN优化后的图片生成 优化模型代码对比 0-核心逻辑脉络 1&#xff09;Anacanda使用CUDAPytorch2&#xff09;使用本地MNIST进行手写图片训练3&#xff09;…

11-1.Android 项目结构 - androidTest 包与 test 包(单元测试与仪器化测试)

androidTest 包与 test 包 在 Android 项目中&#xff0c;androidTest 包与 test 包用于存放不同类型的测试代码的 1、测试类型 &#xff08;1&#xff09;androidTest 包 主要用于存放单元测试&#xff08;Unit Tests&#xff09;代码 单元测试是针对应用程序中的独立模块…