前面简单说了一下OSGI,这只是一个框架。想运行各种程序,就需要编写不同的Bundle。OSGI在需要的时候可以下载并安装Bundle,在不需要的时候可以将他们删除。每个Bundle可以独立运行,也可以依赖其它Bundle而存在。
编写Bundle,最主要是继承OSGI提供的接口。
public class Activator implements BundleActivator {
public void start(BundleContext bc) {
}
public void stop(BundleContext bc) {
}
}
可以看到,我们的类Activator继承于BundleActivator接口,并实现start和stop方法。这里的Start方法说白了相当于main入口函数。例如写一个Swing的应用程序,那么界面的初始化和显示就应该写在Start方法里。OSGI就是查找这个方法对Bundle进行启动的。
下载最新的knopflerfish测试环境。网址www.Knopflerfish.org。将程序打包成JAR文件,要包含MF文件,MF文件中包含Bundle部署需要的各种信息。
举个MF文件的例子。
Manifest-Version: 1.0
Bundle-SymbolicName: my bundle
Bundle-Name: my bundle
Bundle-Version: 1.0
Bundle-Activator: Activator
Import-Package: org.osgi.framework
大概意思看看名称就明白了。其中Bundle-Activator是启动Bundle的入口类。
将JAR文件放入环境中运行。例如,在jars目录下创建My目录,然后将自己的my.jar文件拷贝到My目录下。然后修改XARGS文件(win2k就修改init_Windows2000.xargs,winxp修改init_WindowsXP.xargs),依次写入下面两行:
-install My/my.jar
-start My/my.jar
意义很明显。然后执行start.bat就可以看到Bundle运行的效果了。如果找不到start.bat,也可进入命令行,进入主目录,执行:
java -jar framework.jar
需要注意的是:每次执行程序,都会自动生成fwdir目录,这个目录记录了上次的信息,如果程序重新编译,JAR文件被重新导入,则需要删除整个fwdir目录,再执行start.bat。
分享到:
相关推荐
Laya 用TypeScript写的代码,编译成JavaScript后bundle.js没更新
基于 equinox 的 OSGI 运行BUNDLE例子,已包含 ECLIPSE 下的OSGI平台包,按步骤运行即可。 当然,设置JAVA_HOME,及BIN环境变量运行JAVAC 就不用说了 ^-^
Nexus是Maven仓库管理器,内嵌Jetty的bundle,只要你有JRE就能直接运行
ubuntu任何目录下运行adb 附adt-bundle-linux-sdk.part5.rar
ubuntu任何目录下运行adb 附adt-bundle-linux-sdk.part1.rar
安装自己的maven服务器,解压后进入\nexus-2.1.2-bundle\nexus-2.1.2\bin\jsw\,根据操作系统类型选择文件夹,选择是windows-x86-64文件夹,双击console-nexus.bat运行。游览器中输入http://127.0.0.1:8081/nexus/,...
ubuntu任何目录下运行adb 附adt-bundle-linux-sdk.part4.rar
ubuntu任何目录下运行adb 附adt-bundle-linux-sdk.part2.rar
这是运行在电脑系统Windows x86老机器上的eclipse 配置ADT插件的集成( Android开发工具套件) 可以开发旧设备系统在Android 2~5以上的app应用,配置ADT插件有Android 4.3(API 18)模拟器
iis运行net core必备,最新版本,双击安装,打开iis,查看“模块”,确认“AspNetCoreModule”模块已注册。
ubuntu任何目录下运行adb 附adt-bundle-linux-sdk.part2.rar
java运行依赖jar包
安装好Nix之后,您可以运行:$ ./nix-bundle.sh hello /bin/hello hello表示从NixPkgs要使用,而尼克斯推导/bin/hello表示可执行文件相对的路径hello ,你想运行。 这将创建文件“ hello”。 运行它:$ ./...
什么是Bundle? A bundle is a directory with a standardized hierarchical ...一个iOS App运行所必需的文件,这个结构化的文件里存储着App运行需要的各种因素(例如:需要使用地理位置,支持的设备等等) 可
java运行依赖jar包
要安装cargo bundle ,运行cargo install cargo-bundle 。 这会将发布到最新版本的cargo-bundle作为子命令添加到默认的cargo安装中。 要开始使用cargo bundle ,请在您项目的Cargo.toml文件中添加[package.metadata...
gatsby-plugin-webpack-bundle-analyser-v2 具有最新版本的Gatsby插件,可通过交互式可缩放... 然后正常运行构建,插件将自动打开带有捆绑分析的浏览器窗口。 选项 默认情况下,此插件在dev mode下处于禁用状态,如果要
1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用! 2.主要针对各个计算机相关专业,包括计科、信息安全、...基于python实现在线外参估计功能源码(基于Bundle Adjustment算法和李群-李代数工具)+运行说明.zip
bundler的一项漂亮功能是bundle exec命令,它使您可以在捆绑的gem依赖项上下文中运行可执行文件(例如rake)。 换句话说,您将只能访问您告诉捆绑器要使用的宝石。 要以这种方式运行命令,您需要在命令前加上“ ...
Android 基于Bundle对象编写实现一个标准的体重测量仪,其实就是一个Activity跳转页面然后接收值做处理的例子,代码利用网友写的android可视化GUI布局拖拉工具DroidDraw布局了界面。 有一点需要大家注意的是,...