为了后面demo的结果显示需要先说下自定义osgi控制台命令,自定义命令的类必须实现org.eclipse.osgi.framework.console.CommandProvider接口
该接口中只有一个方法public String getHelp()用于在help方法中添加我们自定义命令的描述
自定义命令也很简单,只要写一个以下划线+命令的方法即可,比如我想自定义一个say命令
- public void _say(CommandInterpreter ci) {
- ci.print("said:" + ci.nextArgument());
- }
这个CommandInterpreter参数必须要,否则找不到命令,ci.nextArgument()获取osgi控制台命令后跟的参数
通过getHelp方法就可以把该自定义命令的描述加到osgi控制台help命令中
- @Override
- public String getHelp() {
- return "\tsay – say what you input\n";
- }
下面建个bundle来演示一下
New-->Plug-inProject
Finish完成
打开MANIFEST.MF文件,导入org.eclipse.osgi.framework.console和org.osgi.framework包
创建一个类并实现CommandProvider和BundleActivator接口
类代码如下
- public class CustomizedCommand implements CommandProvider, BundleActivator {
- @Override
- public void start(BundleContext context) throws Exception {
- context.registerService(CommandProvider.class.getName(),
- new CustomizedCommand(), null);
- }
- @Override
- public void stop(BundleContext arg0) throws Exception {
- }
- public void _say(CommandInterpreter ci) {
- ci.print("said:" + ci.nextArgument());
- }
- @Override
- public String getHelp() {
- return "\tsay – say what you input\n";
- }
- }
打开MANIFEST.MF,添加Bundle-Activator
![](https://img-my.csdn.net/uploads/201205/27/1338121783_1156.jpg)
Run运行后,在osgi控制台输入ss会看到我们建的bundle处于运行状态
![](https://img-my.csdn.net/uploads/201205/27/1338121788_1712.jpg)
这里自定义的bundle的id比较大,是因为configuraton的缓存没有清理,我们可以在settings中把Clear the configuration area before launching勾上
![](https://img-my.csdn.net/uploads/201205/27/1338121792_6139.jpg)
输入自定义命令say后会调用 _say方法
![](https://img-my.csdn.net/uploads/201205/27/1338121795_9674.jpg)
在help方法中也能找到我们自定义的命令描述
osgi控制台自定义命令就说到这,这个demo中用到的jar包为
org.eclipse.osgi_3.7.2.v20120110-1415.jar
对于刚接触osgi,流程可能不太熟悉所以前面几章截图比较多,后面章节对基础的东西就不多加赘述。