1、从Eclipse安装程序中找到org.eclipse.osgi_3.3.0.v20070530.jar文件(版本字符串取决于你的Eclipse)并将它复制到一个空目录。为了保持命令的简短, 我们重命名该文件为equinox.jar。
2、在DOS命令窗口中定位到equinox.jar文件所在目录下,并执行以下命令:
java -jar equinox.jar -console
如果屏幕出现 osgi> 提示符,则说明OSGi已经成功运行了。
可以输入ss命令,查看已经安装的Bundle列表和它们当前的状态信息:
这表示有一个Bundle已被安装和激活,并且它是系统Bundle。这是一个在OSGi中总是存在的特殊Bundle,它表示框架本身。
3、创建自己的Bundle
在同一目录下创建一个名为HelloActivator.java的类文件,该类必须实现BundleActivator接口,源码如下:
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class HelloActivator implements BundleActivator {
public void start(BundleContext context) throws Exception {
System.out.println("start hello bundle!");
}
public void stop(BundleContext context) throws Exception {
System.out.println("stop hello bundle!");
}
}
4、创建Bundle的描述文件
一个Bundle需要一个MANIFEST文件来声明各种关于Bundle的描述数据,例如它的名称,版本等等。这里创建一个名为Hello.MF的文件,内容如下:
Manifest-Version: 1.0
Bundle-Name: Hello
Bundle-Activator: HelloActivator
Bundle-SymbolicName: Hello
Bundle-Version: 1.0.0
Import-Package: org.osgi.framework
注意:文件必须以一个空行结尾,否则,jar命令行工具会截去文件最后一行内容。
导入包:Import-Package: com.cjm.bundle.user.service;version="[1.0.0,2.0.0)", org.osgi.framework;version="1.3.0"
导出包:Export-Package: com.cjm.bundle.user.manager;version="1.0.1", com.cjm.bundle.user.service;version="1.0.0"
方括号意味着包括,圆括号意味着排除。
如果缺少 Import-Package: org.osgi.framework 描述,则会抛出类似以下的异常信息:
org.osgi.framework.BundleException: The activator HelloActivator for bundle Hello is invalid
at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:141)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:970)
......
Caused by: java.lang.NoClassDefFoundError: org/osgi/framework/BundleActivator
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
5、编译打包Bundle
在新的DOS命令窗口中定位到equinox.jar文件所在目录下,并按顺序执行以下两个命令:
javac -classpath equinox.jar HelloActivator.java
jar -cfm Hello.jar Hello.mf HelloActivator.class
将会在当前目录下生成一个名为Hello.jar的文件
6、安装Bundle
在OSGi控制台中执行以下命令: install file:Hello.jar ,控制台输出Bundle id is 1。重新执行ss命令可以看到Bundle已被成功安装。
7、启动Bundle
在OSGi控制台中执行以下命令: start 1 ,其中1是Bundle的id
8、停止Bundle
在OSGi控制台中执行以下命令: stop 1 ,其中1是Bundle的id
9、卸载Bundle
在OSGi控制台中执行以下命令: uninstall 1 ,其中1是Bundle的id
- 大小: 11.2 KB
- 大小: 10.1 KB
分享到:
相关推荐
NULL 博文链接:https://wv1124.iteye.com/blog/1278850
equinox-SDK-3.7.zip equinox-SDK-3.7.zip equinox-SDK-3.7.zip equinox-SDK-3.7.zip equinox-SDK-3.7.zip equinox-SDK-3.7.zip
equinox
OSGi与Equinox:创建高度模块化的Java系统》分为四个部分。第一部分主要介绍了OSGi和Equinox,以及OSGi标准的Eclipse实现;第二部分采用非正式教程的方式教给读者如何从零开始构建真实的Toast应用,针对每一个步骤都...
eclipse de osgi框架 equinox-SDK-3.6.1.part1
OSGi and Equinox, Creating Highly Modular Java Systems
深入理解OSGi:Equinox原理、应用与最佳实践源代码,同时附带equinox-SDK-3.8源代码。
equinox-SDK-4.18.zip
org.eclipse.equinox.executable org.eclipse.equinox.launcher org.eclipse.osgi org.eclipse.osgi.tests 另加几篇分析的文章
Equinox
equinox-all-1.7。Appfuse的缩小版。
本文将介绍 Equinox 的 ServletBridge 项目,提供一个示例来说明如何使用 ServletBridge,并将简要分析 它的实现方法。 读者将首先了解到如何在 Servlet Container 中嵌入 OSGI,并从文章提供的例子中了了解其工作...
equinox-SDK-3.8.zip源码包
我实现的《使用Equinox开发OSGI应用程序》全部功能的代码和分发包,工程师基于Eclipse3.3的
Equinox p2详细图示讲解, RCP中如何实现版本检测,更新
OSGI标准实现框架equinox的SDK,版本是3.8.2.里面包含equinox的所有插件jar包,适合做OSGI的开发。