IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Eclipse插件开发 -> 正文阅读

[开发工具]Eclipse插件开发

基础知识

1.Eclipse的架构

architecture=架构
platform=平台

2.扩展点

代码1-1 plugin.xml中声明扩展

<extension point="被使用扩展点的ID">
    ......
</extension>

Eclipse平台提供的扩展点有
增加菜单项
增加视图
增加编辑器

工作台和资源访问的API是Eclipse提供的API中最基本的,在插件开发时使用频率较高的API。在这里不做详细的说明,在以后得例子中会出现一些这样的API。
 使用PlatformUI作为工作台访问的入口点和使用ResourcesPlugin作为工作区访问的入口点,是无论如何也要记住的。

3.工作台(Workbench)

从插件的代码中访问工作台使用org.eclipse.ui.PlatformUI类。代码1-2说明了从PlatformUI中取得工作台和工作台窗口的代码示例。

代码1-2 使用PlatformUI访问工作台

//取得工作台
IWorkbench workbench = PlatformUI.getWorkbench();
//取得工作台窗口
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
//取得工作台页面
IWorkbenchPage page = window.getActivePage();
//取得当前处于活动状态的编辑器窗口
IEditorPart part = page.getActiveEditor();

4.工作区和资源API

对工作区的访问需要使用org.eclipse.core.resources.ResourcesPlugin。代码1-3是利用IWorkspaceRoot,去的工作区内的工程的代码示例

代码1-3 使用ResourcesPlugin访问工作区

//取得工作区的root
IWorkspaceRoot wsroot = ResourcesPlugin.getWorkspace().getRoot();
//取得项目
IProject[] projects = wsroot.getProjects();

第一个Eclipse插件

1.生成插件工程

选择新建一个插件工程,选择[插件工程(Plug-in Project)],新建一个现有的hello world模板
在这里插入图片描述

2.插件的动作

manifest编辑器的[概要]页面右侧[启动Eclipse应用(Luanch an Eclipse application)]。点击后,会启用一个新的Eclipse实例。
 在这里插入图片描述

  • MANIFEST.MF和plugin.xml
一个插件包含MANIFEST.MF和plugin.xml两个配置文件。MANIFEST.MF是OSGi的handler配置文件,记录了插件ID、名称、作者、和其他插件的依赖关系等。plugin.xml记录了插件的扩展和扩展点的定义等信息。

3.PDE(插件开发环境)的功能

  • Manifest编辑器
  • 在这里插入图片描述

在这里插入图片描述

  1. 解读示例插件的代码
  • plugin.xml
为了在菜单栏增加一个项目,文件中使用了extension元素。
①的id指定了扩展点的名称org.eclipse.ui.actionSets。extension里的内容根据扩展点而不同。示例插件中包含了actionSet、menu、action等元素。
②中的class属性指定了actions.SampleAction类作为响应菜单或者工具栏按钮的action类。
  • SampleAction.java

①run()方法内记录了action执行时的处理。利用MessageDialog.openInformation方法打开了一个对话框。

  • Activator.java
    这个类对插件的生命周期进行了管理,被称为插件类。
    在这里插入图片描述

插件的测试与调试

  1. 使用JUnit对插件进行测试
    在这里插入图片描述

  2. 调试和错误处理

  • 输出日志
        向Eclipse下的[.metadata]文件夹的[/.log]文件进行日志输出。输出日志时使用org.eclipse.core.runtime.ILog接口,通过插件类获得ILog接口的实例。
ILog log = Activator.getDefault().getLog();
         
log.log(new Status(IStatus.OK, Activator.PLUGIN_ID,
    0, "正常消息", null));
         
log.log(new Status(IStatus.OK, Activator.PLUGIN_ID,
    0, "异常消息", new Exception("输出日志的异常")));

在这里插入图片描述

  • 错误通知
    错误发生后通知使用者的方法有很多,最简单的方法就是使用JFace的org.eclipse.jface.dialogs.ErrorDialog类。
try{
    //....
}catch(Exception e){
    IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID,
            0, e.toString(), e);
    ErrorDialog.openError(window.getShell(), "错误", "插件出错了!", status);
}

OSGi框架

OSGi(Open Service Gateway Initiative)框架是运行在JavaVM环境里的服务平台。框架提供的主要功能是对应用和组件的生命周期管理,系统可以在无需重启的情况下,远程操纵组件的安装、启动、停止。

在Eclipse快捷方式上加入-console参数,可以在Eclipse启动的同时创建一个OSGi框架控制台。
在这里插入图片描述

制作OSGi Bundle

1. 生成OSGi工程
在这里插入图片描述
在这里插入图片描述
生成工程后,在Manifest编辑器中点击[启动框架(Launch the framework)]运行新生成的OSGi Bundle。执行后可能会出现大量的错误。原因是Eclipse中的OSGiBundle在OSGi框架中注册了,但是UI相关的部分没能启动。我们进入[运行设置(Run Configuration)],取消所有的Bundle绑定,只选中我们当前要测试的Bundle。

在这里插入图片描述

2. OSGi Service和Tracker

上一节我们制作了一个简单的在启动和停止时输出消息的Bundle。代码很简单的实现了BundleActivator接口的sart()和stop()方法,在其中利用System.out.println打出了信息。

public class Activator implements BundleActivator {
 
    public void start(BundleContext context) throws Exception {
        System.out.println("Hello World!!");
    }
     
    public void stop(BundleContext context) throws Exception {
        System.out.println("Goodbye World!!");
    }
}

在OSGi框架中为了生命周期管理提供了开始和停止方法,仅此而已,OSGi Bundle就可以运行起来了。OSGi框架有一种可以为多个Bundle提供作为共通(Common)使用的Service功能,称为OSGi Service。

最简单的OSGi Service
public class OSGiService {
    public void doSomething(){
        System.out.println("Running Common Service");
    }
}
代码3 执行OSGi Service
public class Activator implements BundleActivator {
 
    public void start(BundleContext context) throws Exception {
        System.out.println("Hello World!!");
        // 注册OSGi Service
        context.registerService(OSGiService.class.getName(), new OSGiService(),
                new Properties());
    }
 
    public void stop(BundleContext context) throws Exception {
        System.out.println("Goodbye World!!");
        // 生成Service Tracker
        ServiceTracker tracker = new ServiceTracker(context,
                OSGiService.class.getName(), null);
 
        tracker.open();
        // 取得Service
        OSGiService service = (OSGiService) tracker.getService();
        // 执行Service
        service.doSomething();
    }
}

3. Bundel的安装和更新

OSGi框架在JavaVM不重启的情况下也可以安装和卸载Bundle。
将工程导出到c盘根目录下,启动OSGi控制台输入install file:\\C:\plugins\NewBundle_1.0.0.201008182238.jar。再通过ss命令确认bundle的安装。

代码6 Bundle的安装和卸载

osgi> install file:\\\C:\plugins\NewBundle_1.0.0.201008182238.jar
Bundle id is 321
 
osgi> ss New
 
Framework is launched.
 
id      State       Bundle
321     INSTALLED   NewBundle_1.0.0.201008182238
 
osgi> start NewBundle
New bundle start!!
 
osgi> uninstall NewBundle
New bundle stop!!
 
osgi> ss New
 
Framework is launched.
 
id      State       Bundle
 
osgi>

在这里插入图片描述

SWT简介

	swt,主要是一些界面的布局开发。

GEF,是开发编辑器的一种常用技术。

EMF,是开发复杂模型的框架。

GMF,是GEF与EMF的整合,但是包含的插件包很多,因此不推荐学习。如果使用的话,自己整合GEF和EMF也是可以的。红皮书里面有整合的内容。

参考资料

博客
电子书

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-08-24 15:46:13  更:2021-08-24 15:47:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 9:45:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码