每个Karaf包是否由单独的类加载器加载?
SAME类加载器是否加载了所有功能包?
如果我在我正在尝试开发的新功能中包含依赖功能,那么该功能的捆绑包是否会使用SAME类加载器作为我正在尝试开发的功能?
答案 0 :(得分:2)
在OSGi中,通常每个bundle都有自己的类加载器。这个类加载器提供bundle的类,并委托给bundle捆绑导入包的classloader。所以基本上每个类通常由类所在的bundle的类加载器加载。然后,Manifest和OSGi解析器中的Import-Package和Export-Package语句确保bundle也能看到其他bundle的类。
Karaf功能与类加载器完全无关。他们只是定义了哪些包被加载。