Thanks Freeman! But even for the bundle declared not sealed ? In the MANIFEST.MF of derbyclient: Name: org/apache/derby/jdbc/ Sealed: false
Thanks. Xilai From: Freeman Fang [mailto:[email protected]] Sent: Thursday, April 05, 2012 4:51 PM To: [email protected] Subject: Re: about Packages Exported by Multiple Bundles Hi, You really shouldn't install multiple bundles with same package and same version, otherwise you'll encounter the well-known split-package issue in OSGi container. Freeman On 2012-4-5, at 下午4:39, XiLai Dai wrote: Hello, Got a problem about Packages Exported by Multiple Bundles. There are 2 bundles exported org.apache.derby.jdbc package. karaf@trun>install –s mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.derbynet/10.8.1.2_1 karaf@trun>install -s mvn:org.apache.derby/derbyclient/10.8.1.2 karaf@trun> list [ 222] [Active ] [ ] [ ] [ 60] Apache ServiceMix :: Bundles :: derbynet (10.8.1.2_1) [ 238] [Active ] [ ] [ ] [ 60] Apache Derby 10.8 (10.8.1000002.1095077) karaf@trun> exports | grep derby.jdbc 222 org.apache.derby.jdbc; version="10.8.1.2" 238 org.apache.derby.jdbc; version="0.0.0" Then, install a bundle with Import-Package like this: Import-Package: javax.sql,org.apache.derby.jdbc,org.osgi.service.bluepri nt;version="[1.0.0,2.0.0)",org.osgi.service.cm;version="[1.3,2)" will throw a ClassNotFoundException: Caused by: java.lang.ClassNotFoundException: org.apache.derby.jdbc.ClientDataSource at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:460)[osgi-3.6.2.R36x_v20110210.jar:] at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)[osgi-3.6.2.R36x_v20110210.jar:] at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)[osgi-3.6.2.R36x_v20110210.jar:] at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)[osgi-3.6.2.R36x_v20110210.jar:] at java.lang.ClassLoader.loadClass(ClassLoader.java:248)[:1.6.0_24] at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:338)[osgi-3.6.2.R36x_v20110210.jar:] at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:232)[osgi-3.6.2.R36x_v20110210.jar:] at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1197)[osgi-3.6.2.R36x_v20110210.jar:] at org.apache.aries.blueprint.container.BlueprintContainerImpl.loadClass(BlueprintContainerImpl.java:384)[10:org.apache.aries.blueprint:0.3.1] at org.apache.aries.blueprint.container.BlueprintRepository.loadClass(BlueprintRepository.java:381)[10:org.apache.aries.blueprint:0.3.1] at org.apache.aries.blueprint.container.GenericType.parse(GenericType.java:113)[10:org.apache.aries.blueprint:0.3.1] at org.apache.aries.blueprint.di.AbstractRecipe.loadType(AbstractRecipe.java:110)[10:org.apache.aries.blueprint:0.3.1] ... 18 more If uninstall bundle 222, then, the app bundle will be installed successful. How to process this kind of problem of package exported from multi bundles within karaf? Thanks. Xilai --------------------------------------------- Freeman Fang FuseSource Email:f<mailto:[email protected]>[email protected]<mailto:[email protected]> Web: fusesource.com<http://fusesource.com/> Twitter: freemanfang Blog: http://freemanfang.blogspot.com http://blog.sina.com.cn/u/1473905042 weibo: http://weibo.com/u/1473905042
