Eclipse下编写第一个OSGI Hello World应用
程序员文章站
2022-04-28 09:58:18
...
1.打开Eclipse,依次打开“File -> new -> project -> Plug-in Development -> Plug-in Project”,如下图所示:
若没有Plug-in Development,参考如何解决eclipse中没有plugin development,进行处理。
点击next,输入名称,注意目标平台的选择,由于我们的项目是一个通用的 OSGi bundle,所以选择 equinox,如下图所示:
点击next,更改插件的名称,Options选择第一个缺省的设置,如下图所示:
点击next,不使用任何模板,所以勾掉缺省的选项:
点击finish,创建成功。
2.打开“src -> org.test.helloworld -> Activator.java”,在start方法中加入打印HelloWorld的代码,如下:
package org.test.helloworld;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator {
private static BundleContext context;
static BundleContext getContext() {
return context;
}
/*
* (non-Javadoc)
* @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
*/
public void start(BundleContext bundleContext) throws Exception {
Activator.context = bundleContext;
System.out.println("Hello World");
}
/*
* (non-Javadoc)
* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext bundleContext) throws Exception {
Activator.context = null;
}
}
随后保存。
3.打开“Run -> Run Configurations...”,找到OSGI Framework,点击右键选择new,填写名称,选择对应的Workspace,Target Platform选择下图所示的几项,勾掉最下方的选择框:
4.点击Run,查看控制台是否打印了Hello World,若无报错,则创建成功
PS:Equinox OSGi 主要的控制台命令表
类别 | 命令 | 含义 |
---|---|---|
控制框架 |
launch
|
启动框架 |
shutdown
|
停止框架 | |
close
|
关闭、退出框架 | |
exit
|
立即退出,相当于 System.exit | |
init
|
卸载所有 bundle(前提是已经 shutdown) | |
setprop
|
设置属性,在运行时进行 | |
控制 bundle |
Install
|
安装 |
uninstall
|
卸载 | |
Start
|
启动 | |
Stop
|
停止 | |
Refresh
|
刷新 | |
Update
|
更新 | |
展示状态 |
Status
|
展示安装的 bundle 和注册的服务 |
Ss
|
展示所有 bundle 的简单状态 | |
Services
|
展示注册服务的详细信息 | |
Packages
|
展示导入、导出包的状态 | |
Bundles
|
展示所有已经安装的 bundles 的状态 | |
Headers
|
展示 bundles 的头信息,即 MANIFEST.MF 中的内容 | |
Log
|
展示 LOG 入口信息 | |
其它 |
Exec
|
在另外一个进程中执行一个命令(阻塞状态) |
Fork
|
和 EXEC 不同的是不会引起阻塞 | |
Gc
|
促使垃圾回收 | |
Getprop
|
得到属性,或者某个属性 | |
控制启动级别 |
Sl
|
得到某个 bundle 或者整个框架的 start level 信息 |
Setfwsl
|
设置框架的 start level | |
Setbsl
|
设置 bundle 的 start level | |
setibsl
|
设置初始化 bundle 的 start level |