为了后面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
Run运行后,在osgi控制台输入ss会看到我们建的bundle处于运行状态
这里自定义的bundle的id比较大,是因为configuraton的缓存没有清理,我们可以在settings中把Clear the configuration area before launching勾上
输入自定义命令say后会调用 _say方法
http://在help方法中也能找到我们自定义的命令描述
osgi控制台自定义命令就说到这,这个demo中用到的jar包为
org.eclipse.osgi_3.7.2.v20120110-1415.jar
对于刚接触osgi,流程可能不太熟悉所以前面几章截图比较多,后面章节对基础的东西就不多加赘述。