在开发 OSGi bundle 时,如果你的 Bundle 所依赖的某个 Jar 并不是一个 OSGi bundle(可以通过 MANIFEST.MF)文件看出来)。有一些解决方法:
- 将这个 Jar 包的 MANIFEST.MF 文件修改为符合 OSGi 规范的格式。这个工作可以手工做。(网上的使用 Eclipse 完成这个工作的方法我没有成功。成功者可告诉我方法)
- 将 Jar 包打入到你的 OSGi 包中。下面介绍使用 Felix 的 Maven Bundle plugin 去实现这个方法。
将下面的代码加入到你项目的 pom.xml 中。这样你所依赖的 Jar 将被打入到生产的 Bundle 的 Jar 包中。同时,原本 Import-Package 中的属于那些 Jar 包的 package 也会被移除。
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Export-Package>
xxx.xxx
</Export-Package>
<Private-Package>
xxx.xxx
</Private-Package>
<Import-Package>
*
</Import-Package>
<Embed-Dependency>maven_dependency_artifact_id_1,artifact_id_2,...</Embed-Dependency>
</instructions>
</configuration>
</plugin>
分享到:
相关推荐
本篇文章将深入探讨如何使用Eclipse与Maven一起打包bundle,这在Java OSGi(Open Services Gateway Initiative)开发中尤为常见。 首先,我们需要了解OSGi,它是一种模块化系统,用于Java应用程序,允许动态发现和...
2. **创建bundle**:使用OSGi兼容的构建工具(如BndTools或Maven Bundle Plugin)将“myself”工程打包为bundle。在MANIFEST.MF文件中,定义Bundle-SymbolicName和Bundle-Version属性,以标识bundle的唯一性和版本。...
由于没有直接的描述,我们可以推测这可能涉及到如何在OSGi环境中使用Maven进行构建和管理Java项目。 【标签】:“源码”和“工具”这两个标签暗示了讨论可能涵盖了OSGi和Maven的基础概念、它们在实际开发中的应用,...
创建OSGi开发的jar包涉及到以下几个关键知识点: 1. **Bundle基础知识**:一个OSGi bundle本质上就是一个遵循特定规范的JAR文件,其中包含了MANIFEST.MF文件。这个文件包含了关于bundle的重要元数据,如Bundle-...
3. 下载Felix的zip包并解压到适当的目录,通过运行felix.jar文件来启动Felix,通过stop或shutdown命令来停止Felix。 Felix作为OSGi容器,其基本操作涉及一些关键命令,例如: - help:列出所有可用的命令; - ps:...
OSGi和Apache Felix 3.0是两种在Java领域内与模块化相关的重要技术。OSGi(Open Services Gateway ...学习完这本书之后,开发人员将能够使用Felix框架构建自己的模块化应用程序,并理解OSGi技术如何在Java环境中工作。
在本篇文章中,我们将详细介绍如何使用Maven构建一个OSGi项目,包括项目的创建、容器的启动、Bundle的导入与创建等方面。 #### 开发环境 - Eclipse 3.6 或更高版本 - Maven - OSGi框架(例如Equinox或Felix) - ...
Felix Plugin则是在Felix OSGi环境中使用的插件,用于扩展和增强Felix的功能。 这篇名为“osgi felix plug in”的博文虽然链接不可用,但我们可以基于OSGi和Felix的基本概念来探讨相关的知识点。 1. **OSGi模块...
而“将捆绑罐复制到OSGI容器,例如Felix或Faran”表明我们需要将生成的捆绑包部署到支持OSGi的容器中,如Apache Felix或Apache Karaf,它们是OSGi规范的实现,提供了一个运行时环境来管理和执行OSGi捆绑包。...
在"felix学习二-发布classpath为bundle"这个主题中,我们关注的是如何将我们的类路径转换成一个符合OSGi规范的bundle。这通常涉及到以下几个步骤: 1. **创建MANIFEST.MF**: OSGi bundle的元数据存储在MANIFEST.MF...
3. **打包和部署**:将bundle构建为JAR文件,然后部署到OSGi容器,如Apache Felix、Equinox或Karaf等。 4. **管理和监控**:在OSGi容器中,可以通过控制台或Web界面查看和管理bundle的状态,包括启动、停止、更新和...
在这个"IntelliJ 13下OSGi的Maven例子"中,我们将会探索如何在IntelliJ IDEA 13中设置和运行一个基于OSGi的Maven项目。首先,我们需要了解OSGi的核心概念,如Bundle(模块)、Service、生命周期管理等。Bundle是OSGi...
8. **部署和管理**:如何在OSGI运行时环境(如Equinox或Felix)中部署和管理bundle,以及如何使用OSGI的命令行工具或图形用户界面进行操作。 9. **实战应用**:"OSGI实战.pdf"可能包含实际项目案例,演示如何在真实...
8. `build-tools/` - 构建和打包工具,如Maven插件或Ant任务,用于构建OSGi bundle。 9. `README.md` 或 `INSTALL.txt` - 安装和使用说明,指导用户如何设置和运行Felix环境。 10. `LICENSE` 和 `NOTICE` - 许可证...
这个过程可以通过Maven的BND插件或者Apache Felix的bnd工具来完成,确保所有必需的类路径和导出包都正确配置。 `host-HiberExtention`和`HibernateExtensionBin`可能代表了这样的扩展bundle,它们包含了Hibernate的...
2. **类加载器**:OSGI使用独特的类加载机制,每个bundle有自己的类加载器,这使得不同bundle中的相同类可以并存,解决了Java传统的类加载冲突问题。 3. **服务注册和查找**:OSGI服务是组件间通信的关键,通过服务...
Spring OSGi是Spring框架与OSGi服务的结合,使得在OSGi环境中使用Spring变得简单。本教程将帮助初学者快速理解并掌握Spring OSGi的基础概念和应用。 **1. OSGi基本概念** - **模块化系统**:OSGi的核心是模块化,每...
2. **配置构建工具**:使用Maven或Gradle等构建工具,配置OSGi插件,以便生成符合OSGi规范的jar文件。 3. **创建启动配置**:定义一个启动配置,指定初始运行时需要的bundle及其依赖关系。 4. **打包**:使用如...
- **类加载与全局类路径**:JAR文件通常被放置在应用服务器或Java虚拟机的类路径中,这导致所有JAR中的类都可以被加载到同一个类空间中。 - **冲突的类**:当两个JAR文件包含相同名称的类时,就会发生类冲突,这可能...
这可以通过使用Maven的BND插件或者使用Apache Felix的Maven Bundle Plugin实现。在bundle的MANIFEST.MF文件中,需要声明Servlet的类路径以及它在OSGi服务注册时使用的元数据。 2. **服务注册**:在Karaf容器中,...