`
yidongkaifa
  • 浏览: 4147630 次
文章分类
社区版块
存档分类
最新评论

如何写Bundle 如何运行Bundle

 
阅读更多

前面简单说了一下OSGI,这只是一个框架。想运行各种程序,就需要编写不同的BundleOSGI在需要的时候可以下载并安装Bundle,在不需要的时候可以将他们删除。每个Bundle可以独立运行,也可以依赖其它Bundle而存在。

编写Bundle,最主要是继承OSGI提供的接口。

public class Activator implements BundleActivator {

public void start(BundleContext bc) {

}

public void stop(BundleContext bc) {

}

}

可以看到,我们的类Activator继承于BundleActivator接口,并实现startstop方法。这里的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.xargswinxp修改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

分享到:
评论

相关推荐

    基于EQUINOX的 OSGI BUNDLE 运行例子

    标题"基于EQUINOX的OSGI BUNDLE运行例子"指的是一个实际操作示例,展示了如何在EQUINOX OSGi环境中运行OSGi Bundle。EQUINOX提供了一个完整的运行时环境,使得开发者可以方便地管理和执行这些模块化的Bundle。 描述...

    IOS打包Bundle与加载Demo

    这样,我们就可以在运行时动态地从Bundle中加载资源了。 然而,为了保护应用的资源不被非法访问或篡改,有时我们需要对Bundle进行加密。一种常见的做法是在应用启动时解密Bundle,然后在内存中加载。这需要自定义一...

    testBundle

    3. 在使用Bundle传递数据时,确保接收方能够处理这些数据,否则可能会引发运行时异常。 4. 注意数据安全,避免在Bundle中传递敏感信息。 总之,Bundle在Android开发中扮演着不可或缺的角色,掌握其用法和注意事项是...

    AssetsBundle资源打包工具

    5. **加载与卸载**:在游戏运行时,可以使用Unity的AssetBundle系统动态地从本地或网络加载所需的资源,提高用户体验。同样,当资源不再需要时,可以卸载以释放内存。 6. **版本管理**:AssetsBundle还支持版本管理...

    VS2015制作安装包额外需要安装的软件VSI_bundle

    总之,"VS2015制作安装包额外需要安装的软件VSI_bundle"是为了确保你的应用程序能够在其目标环境中正常运行,而不仅仅是在开发环境中。通过集成这个捆绑包,你可以避免因为缺失依赖而导致的安装失败,提高用户的安装...

    Laya 用TypeScript写的代码,编译成JavaScript后bundle.js没更新.pdf

    在使用Laya开发游戏或应用时,遇到的一个常见问题是 TypeScript 编写的代码在编译成JavaScript后,bundle.js 文件没有更新。这个问题可能导致开发者的新添加功能无法正常工作,因为bundle.js中没有反映出这些改动。...

    Unity加载Asset Bundle

    Asset Bundle是一个包含Unity对象(如GameObject、Material、Texture、AudioClip等)的文件,这些对象在运行时可以被加载和卸载。Asset Bundle文件通常使用Unity的专用格式存储,可以在不同的平台上运行,支持跨平台...

    VSI_bundle.rar

    首先,`VSI_bundle.exe`是一个可执行文件,通常在Windows操作系统上运行。`.exe`扩展名表示这是一个程序或应用的主体部分,用户通过双击运行来执行它。`VSI_bundle`这个名字可能指的是Visual System Interface(视觉...

    Jar转换为Bundle工具

    OSGI(Open Service Gateway Initiative)是一种模块化系统和Java服务框架,它允许在单个Java虚拟机(JVM)上运行多个独立的模块,每个模块称为一个bundle。在OSGI环境中,JAR文件需要进行特殊处理,以便它们能够...

    可以查看iOS的bundle的工具

    在iOS开发中,Bundle是一个非常重要的概念,它包含了应用程序运行所需的所有资源,如图片、音频文件、本地化字符串、故事板、XIB文件等。本文将深入探讨如何使用名为"SimPholders2.app"的工具来查看iOS应用的bundle...

    adt-bundle-windows-x86-20140624工具文件

    "adt-bundle-windows-x86-20140624工具文件"是一个专为Windows平台上的x86架构设计的Android开发工具包。这个压缩包包含了Android开发者需要的一系列核心工具,使得用户能够在本地环境中创建、调试和发布Android应用...

    eclipse maven 打包bundle

    6. **部署和运行bundle**: 打包完成后,可以在OSGi容器(如Apache Felix, Equinox)中部署和运行生成的.bundle文件。 博客链接提供的文章可能更详细地介绍了这些步骤,并可能包括了如何处理特定问题、最佳实践,...

    android bundle和activity之间交换数据

    通过查看和运行这个项目,你可以更深入地了解这些概念,并学习实际应用场景。 总之,理解和熟练掌握Bundle与Activity之间的数据交换是Android开发的基础,这不仅可以帮助你构建功能丰富的应用,也有助于提高应用的...

    安卓Android源码——Bundle.rar

    8. **异常处理**:在处理Bundle数据时,要注意可能出现的空指针异常和其他运行时错误,确保在添加和获取数据时进行适当的检查。 9. **序列化与反序列化**:了解Bundle的数据序列化过程可以帮助我们更好地理解和解决...

    VIM Bundle 配置

    在VIM中,"Bundle"指的是用于管理和安装插件的机制,这使得我们可以方便地扩展VIM的功能。下面将详细介绍VIM Bundle配置的相关知识点。 ### VIM Bundle是什么? VIM Bundle是一种组织和管理VIM插件的方式。它允许...

    OSGI bundle

    这通常涉及到设置IDEA的项目结构、添加Felix框架的依赖、配置运行配置等操作,使得开发者可以在IDEA中调试和测试OSGI bundle。 **总结** OSGI bundle提供了一种模块化的软件开发方式,使得Java应用程序可以按需...

    lrz.bundle.js图片压缩插件兼容IOS,Android,PC

    该插件的特性是兼容多种平台,包括iOS、Android以及PC,确保在各种设备上都能正常运行。 首先,我们来深入了解 lrz.bundle.js 的核心功能。它是一个JavaScript库,可以方便地与HTML5的`<input type="file">`标签...

    mapapi.bundle

    总的来说,"mapapi.bundle"是地图API的重要组成部分,它的存在与否直接影响着地图功能的正常运行。开发者在使用地图服务时,务必关注此文件的添加和配置,以确保地图定位功能的稳定性和可靠性。

    adt-bundle-windows-x86-20140624

    这个压缩包是Google为了方便开发者进行Android应用开发而提供的集成环境,包含了所有必要的工具和软件,使得开发者能够在个人电脑上构建、调试和运行Android应用程序。 首先,我们要了解ADT(Android Developer ...

    Assets Bundle 资源打包与动态加载

    标题“Assets Bundle 资源打包与动态加载”指出了本文档的主要内容:如何使用Assets Bundle进行资源的打包处理以及如何在游戏运行时实现这些资源的动态加载。 #### 描述解析 描述同样为“Assets Bundle 资源打包与...

Global site tag (gtag.js) - Google Analytics