普通jar包和osgi的Bundle包
开放服务网关协议 (Open Services Gateway Initiative),简称 OSGi,OSGI 为Java平台提供了动态模块化的特性,但是没有对Java底层实现如类库和Java虚拟机等修改.OSGi 的体系架构是基于插件式的软件结构,包括一个 OSGi 框架和一系列插件,在 OSGi中,插件称为 Bundle,Bundle 是以 jar 包形式存在的一个模块化物理单元,里面包含了代码,资源文件和元数据(metadata),并且 jar 包的物理边界也同时是运行时逻辑模块的封装边界,
1. 普通jar包和osgi的bundle包有什么不同
最大的区别META-INF/MANIFEST.MF文件内容有差别,MANIFEST.MF文件主要的作用就是记录jar包的一些信息
1. 普通包中的MANIFEST.MF
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.2
Created-By: 1.2.2 (Sun Microsystems Inc.)
Extension-Name: org.apache.commons.logging
Specification-Title: Jakarta Commons Logging
Specification-Vendor: Apache Software Foundation
Specification-Version: 1.0
Implementation-Title: Jakarta Commons Logging
Implementation-Vendor-Id: org.apache
Implementation-Vendor: Apache Software Foundation
Implementation-Version: 1.1
其中
- Manifest-Version 用来定义manifest文件的版本,例如:Manifest-Version: 1.0
- Created-By 声明该文件的生成者,一般该属性是由jar命令行工具生成的
- Signature-Version 定义jar文件的签名版本
- Class-Path 应用程序或者类装载器使用该值来构建内部的类搜索路径
- Main-Class 定义jar文件的入口类,该类必须是一个可执行的类
- Extension-Name 该属性定义了jar文件的标识
- Implementation-Title 定义了扩展实现的标题
- Implementation-Version 定义扩展实现的版本
- Implementation-Vendor 定义扩展实现的组织
- Implementation-Vendor-Id 定义扩展实现的组织的标识
- Implementation-URL : 定义该扩展包的下载地址(URL)
- Specification-Title 定义扩展规范的标题
- Specification-Version 定义扩展规范的版本
- Specification-Vendor 声明了维护该规范的组织
2. OSGI中bundle包MANIFEST.MF文件
Manifest-Version: 1.0
Export-Package: org.apache.commons.logging;provider="slf4j";version="1.1.1",org.apache.commons.logging.impl;provider="slf4j";version="1.1.1";uses:="org.apache.commons.logging,org.slf4j,org.slf4j.spi"
Implementation-Title: jcl-over-slf4j
Implementation-Version: 1.6.1
Built-By: ceki
Tool: Bundlor 1.0.0.RELEASE
Bundle-Name: SLF4J Jakarta Commons Logging Over SLF4J Binding
Created-By: Apache Maven
Bundle-Vendor: SpringSource
Build-Jdk: 1.6.0_16
Bundle-Version: 1.6.1
Bundle-ManifestVersion: 2
Bundle-Description: JCL 1.1.1 implementation over SLF4J
Bundle-SymbolicName: com.springsource.slf4j.org.apache.commons.logging
Import-Package: org.slf4j;version="[1.6.1, 1.6.1]",org.slf4j.spi;version="[1.6.1, 1.6.1]"
Archiver-Version: Plexus Archiver
MANIFEST.MF文件格式
- 属性声明的一般格式是 name: value
- 一行不超过 72 个字符,下一行则由单个空格字符开始
- Bundle-Name 指bundle名称
- Bundle-Description: Bundle的一个简单描述
- Bundle-Vendor 指bundle发布商
- Bundle-Version 指bundle发布版本 默认为:0;
- Bundle-Activator: 指定一个当Bundle Activated时调用的类
- Bundle-ManifestVersion 定义了bundle遵循规范的规则 对OSGi3而言是1对OSGi4而言是2
- Bundle-SymbolicName 定义的唯一bundle名称 (必须)
- Bundle-UpdateLocation描述 bundle 的更新地址。bundle 需要更新,则使用这个地址进行更新
- Import-Package 定义的引用包括包名称和版本号,只有引用了这些包,才能让classloader装载
- Export-Package 该属性指定要公共暴露给其他插件的所有包
- Require-Bundle 指定 bundle 中需要其他 bundle 导出的内容
因此 一般是通过MANIFEST.MF来区分是osgi可使用的bundle包还是普通jar包
2.如何将普通jar包转换成bundle包
创建新工程选择 Plug-in from Existing JAR Archives
选择需要处理的JAR包
设置工程信息选择OSGI标准运行
完成创建工程如下图
选择创建工程邮件Export导出
选择路径下会存在\plugins的文件夹, 文件夹中就是转换后的jar包
普通jar包和osgi的Bundle包相关推荐
- osgi 如何引入包_OSGi Testsuite:引入类名过滤器
osgi 如何引入包 OSGi Testsuite是一个JUnit测试运行程序 ,它动态地收集要执行的测试类. 它已经由我的同伴Rüdiger大约一年前出版,并且已经在某些项目中证明有用. 但是对于g ...
- PBR游戏3D模型合集包 PBR Game 3D-Models Bundle February 2022
PBR游戏3D模型捆绑包2022年2月 大小解压后:6.99G MAX| OBJ | FBX |TEX 模型获取:PBR游戏3D模型合集包 PBR Game 3D-Models Bundle Feb ...
- jar打包 剔除第三方依赖以及它的依赖_maven打包成第三方jar包且把pom依赖包打入进来的方法...
添加此PLUGIN到项目的POM.XML中 maven-assembly-plugin com.allen.capturewebdata.Main jar-with-dependencies 如果出现 ...
- 【转】iOS-生成Bundle包-引入bundle-使用bundle
在我们使用第三方框架时,常常看到XXX.bundle的文件. 我们找到该文件,显示包内容,大致看到很多资源文件:图片.配置文本.XIB文件-- 什么是Bundle文件? 简单理解,就是资源文件包.我们 ...
- Maven之——使用本地jar包并打包进war包里面的方法
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/52594602 很显然,这种方法是很不可取的,因为Maven是用来团队合作,以及发布 ...
- 有关两个jar包中包含完全相同的包名和类名的加载问题
首先从表现层介绍,后续后深入原理. 1,先简单介绍maven如何生成jar文件方便测试 <plugin><artifactId>maven-assembly-plugin< ...
- bundle包是什么意思_【Xcode小技巧】生成Bundle包
参考文章 制作APP中,我们可以用bundle来管理资源文件. 一.什么是Bundle文件 简单理解,就是资源文件包.我们将许多图片.XIB.文本文件组织在一起,打包成一个Bundle文件.方便在其他 ...
- Maven 打包成第三方jar包且把pom依赖包打入进来的方法
<Maven 打包成第三方jar包且把pom依赖包打入进来的方法> 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! <Maven 打包成第三方jar包且把po ...
- 分享一个java输出pdf的依赖包,非maven,包名:spire.pdf.jar 下载
分享一个java输出pdf的依赖包,非maven,包名:spire.pdf.jar http://repo.e-iceblue.cn/#browse/browse:maven-public:e-ice ...
最新文章
- 每天一点点之 taro 框架开发 - taro路由及传参
- Android仿QQ复制昵称效果2
- thinkphp内置标签简单讲解
- 工作191:loading不声明
- C++ primer第十八章 18.1小结 异常处理
- WinCE程序的几种开发方法
- JavaScript之event事件
- 荣耀青春30青春版能升鸿蒙,或是新一代拍照神器 荣耀30青春版今日发布
- 第3章 神经网络的最优化
- python飞机大战游戏素材_python实现飞机大战小游戏
- 金融风控建模评分卡系列:机器学习特征选择方法
- 溯光者:超简单,一文读懂显卡型号编码数字、字母怎么看,都是什么意思?
- 嫌我们理科生不够浪漫?你有一份音乐数学入门指南待查收
- indexOf 的使用
- Java 动态代理,invoke() 自动调用原理,invoke() 参数
- JS - 将tree(树形)数据结构格式改为一维数组对象格式(扁平化)
- 阿里云使用笔记-第三篇-使用阿里云App连接实例
- 打标工具brat的安装与使用
- 大数据培训需要有基础吗
- 值班排班日历插件引入 参考