在团队开发过程中,不可避免的会出现这样的情况:在bundle内部声明了一个Package的同时,又从外部Import进来相同的Package,这会导致什么情况发生呢?
来做个小实验。
1、创建两个plug-in的项目。
A、创建第一个插件项目
B、同样创建第二个插件项目
2、在每个项目里面除了不同的包,还要都声明一个相同的包名。
在相同的包名里面创建相同名称的类,如下图所示。
3、编写代码
A、第一个SameClass.java代码
packageorg.teamlet.samepackage;
publicclassSameClass{
publicvoidtoShow(){
System.out.println("***Iaminside!");
}
}
B、第二个SameClass.java代码
packageorg.teamlet.samepackage;
publicclassSameClass{
publicvoidtoShow(){
System.out.println("***Iamoutside!");
}
}
4、导出导入包
在第一个项目 equinox.evn.test.samepackage (包含"I am outside"内容)的 Manifest.MF文件中加入导出:
Export-Package: org.teamlet.samepackage
在第二个项目 org.teamlet.osgi.test(包含"I am inside"内容)的 Manifest.MF文件中加入导入:
Import-Package: org.osgi.framework;version="1.3.0",
org.teamlet.samepackage
5、增加调用
在第二个项目 org.teamlet.osgi.test 的Activator 中的 start()方法调用SameClass
publicvoidstart(BundleContextcontext)throwsException{
SameClasssc=newSameClass();
sc.toShow();
}
6、执行
7、结论
如果bundle引入了一个和内部相同的包,那么使用的将是引入的包,而不是内部的包。
从《equinox实现Class Loader机制的代码解读(1)》中的class查找顺序可以看得很清楚。
分享到:
相关推荐
深入理解OSGi:Equinox原理、应用与最佳实践源代码,同时附带equinox-SDK-3.8源代码。
第一部分主要介绍了OSGi和Equinox,以及OSGi标准的Eclipse实现;第二部分采用非正式教程的方式教给读者如何从零开始构建真实的Toast应用,针对每一个步骤都提供了完整的在线示例代码;第三部分由原型构建转向实际的...
equinox
NULL 博文链接:https://salever.iteye.com/blog/712772
Equinox是OSGI R4的一个实现,Equinox这个项目是由Eclipse 开源组织实现并发布的,也是大名鼎鼎的Java开发工具 Eclipse 的底层机制的实现,如果对Eclipse有点熟悉的话,你就知道Equinox 这个东西是多么的棒了,...
我实现的《使用Equinox开发OSGI应用程序》全部功能的代码和分发包,工程师基于Eclipse3.3的
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
osgi的规范实现equinox 基于eclipse版本Oxygen的实现库,官网下载实在太慢,小水管下好后,方便大家下载!
全面解读OSGi规范,深刻揭示OSGi原理,详细讲解OSGi服务,系统地介绍Equinox框架的用法,并通过源代码分析其工作机制,包含大量可操作性极强的解决方案和最佳实践。
本文将介绍 Equinox 的 ServletBridge 项目,提供一个示例来说明如何使用 ServletBridge,并将简要分析 它的实现方法。 读者将首先了解到如何在 Servlet Container 中嵌入 OSGI,并从文章提供的例子中了了解其工作...
eclipse de osgi框架 equinox-SDK-3.6.1.part1
Equinox p2详细图示讲解, RCP中如何实现版本检测,更新
Equinox
OSGi and Equinox, Creating Highly Modular Java Systems
OSGI标准实现框架equinox的SDK,版本是3.8.2.里面包含equinox的所有插件jar包,适合做OSGI的开发。
equinox-SDK-4.18.zip
equinox-all-1.7。Appfuse的缩小版。
org.eclipse.equinox.executable org.eclipse.equinox.launcher org.eclipse.osgi org.eclipse.osgi.tests 另加几篇分析的文章
equinox-SDK-3.8.zip源码包