It does work, if I I modify org.apache.sling.testing.tools.sling.BundlesInstaller to not uninstall the previous SNAPSHOT bundle before installing the new version (comment out line 80). What was the reason for first uninstalling the bundle? Usually an upgrade works much smoother (at least if the version is not downgraded). So what about the following change: Uninstall only if the previously installed versionis higher than the version which is about to be installed. Otherwise we might easily run into the same problems for other bundles, which cannot easily be uninstalled.
> On 07 Dec 2014, at 14:34, Konrad Windszus <konra...@gmx.de> wrote: > > I am experiencing a weird bug in Sling Models IT. > It seems that both Models API 1.1.1-SNAPSHOT and Models Impl 1.1.1-SNAPSHOT > are part of the Sling Launchpad 8-SNAPSHOT. > If I now run the Sling Models IT and deploy my own versions of those bundles, > the API bundle is replaced by the newer version (which is correct), but both > bundles are still available in Felix (due to class loading caching issues I > guess). > The following happens: > 1.) Sling Launchpad starts up with its own version of Models API (has bundle > id 108) > 2.) Models IT deploys its own version of Models API (gets bundle id 110) > 3.) Now the web console only exposes the bundle 110 and no longer bundle 108. > > When I try to execute some test now I get the following exception: > > Caused by: java.lang.ClassNotFoundException: > org.apache.sling.models.factory.ModelClassException not found by > org.apache.sling.models.api [108] > at > org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1556) > at > org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:77) > at > org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1993) > at java.lang.ClassLoader.loadClass(ClassLoader.java:358) > at > org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1397) > at > org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1577) > at > org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1507) > at > org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:77) > at > org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1993) > at java.lang.ClassLoader.loadClass(ClassLoader.java:358) > ... 79 common frames omitted > > This is due to the fact that the Models Impl is bound to the two different > version of Models API at the same time: > > This is the import package section of the Models Impl Bundle: > ====== > javax.annotation,version=0.0.0.1_007_JavaSE from org.apache.felix.framework > (0) <http://localhost:58498/system/console/bundles/0> > javax.inject,version=0.0.0 from org.apache.sling.models.api (110) > <http://localhost:58498/system/console/bundles/110> > javax.servlet,version=2.6.0 from org.apache.felix.http.servlet-api (24) > <http://localhost:58498/system/console/bundles/24> > javax.servlet,version=3.0.0 from org.apache.felix.http.servlet-api (24) > <http://localhost:58498/system/console/bundles/24> > javax.servlet.http,version=2.6.0 from org.apache.felix.http.servlet-api (24) > <http://localhost:58498/system/console/bundles/24> > javax.servlet.http,version=3.0.0 from org.apache.felix.http.servlet-api (24) > <http://localhost:58498/system/console/bundles/24> > org.apache.commons.collections.comparators,version=3.2.1 from > org.apache.commons.collections (60) > <http://localhost:58498/system/console/bundles/60> > org.apache.commons.collections.keyvalue,version=3.2.1 from > org.apache.commons.collections (60) > <http://localhost:58498/system/console/bundles/60> > org.apache.commons.collections.list,version=3.2.1 from > org.apache.commons.collections (60) > <http://localhost:58498/system/console/bundles/60> > org.apache.commons.collections.set,version=3.2.1 from > org.apache.commons.collections (60) > <http://localhost:58498/system/console/bundles/60> > org.apache.commons.lang,version=2.6.0 from org.apache.commons.lang (64) > <http://localhost:58498/system/console/bundles/64> > org.apache.commons.logging,version=1.1.1 from jcl.over.slf4j (1) > <http://localhost:58498/system/console/bundles/1> > org.apache.sling.api,version=2.3.0 from org.apache.sling.api (71) > <http://localhost:58498/system/console/bundles/71> > org.apache.sling.api.adapter,version=2.2.0 from org.apache.sling.api (71) > <http://localhost:58498/system/console/bundles/71> > org.apache.sling.api.resource,version=2.6.0 from org.apache.sling.api (71) > <http://localhost:58498/system/console/bundles/71> > org.apache.sling.api.scripting,version=2.1.0 from org.apache.sling.api (71) > <http://localhost:58498/system/console/bundles/71> > org.apache.sling.commons.osgi,version=2.2.0 from > org.apache.sling.commons.osgi (78) > <http://localhost:58498/system/console/bundles/78> > org.apache.sling.models.annotations,version=1.2.0 from > org.apache.sling.models.api (110) > <http://localhost:58498/system/console/bundles/110> > org.apache.sling.models.annotations.injectorspecific,version=1.1.0 from > org.apache.sling.models.api (110) > <http://localhost:58498/system/console/bundles/110> > org.apache.sling.models.factory,version=1.0.0 from > org.apache.sling.models.api (108) > <http://localhost:58498/system/console/bundles/108> > org.apache.sling.models.spi,version=1.0.2 from org.apache.sling.models.api > (108) <http://localhost:58498/system/console/bundles/108> > org.apache.sling.models.spi.injectorspecific,version=1.1.0 from > org.apache.sling.models.api (110) > <http://localhost:58498/system/console/bundles/110> > org.osgi.framework,version=1.7.0 from org.apache.felix.framework (0) > <http://localhost:58498/system/console/bundles/0> > org.osgi.service.component,version=1.2.1 from org.apache.felix.scr (40) > <http://localhost:58498/system/console/bundles/40> > org.slf4j,version=1.7.6 from slf4j.api (15) > <http://localhost:58498/system/console/bundles/15> > > You can see that models.api is referenced from both the old (108) and the new > bundle (110). > Any idea what is going on here, and why the wiring is going nuts? > > The export package section of the new Model API bundle looks like this: > ===== > javax.inject,version=0.0.0 > org.apache.sling.models.annotations,version=1.2.0 > org.apache.sling.models.annotations.injectorspecific,version=1.1.0 > org.apache.sling.models.factory,version=1.0.0 > org.apache.sling.models.spi,version=1.0.2 > org.apache.sling.models.spi.injectorspecific,version=1.1.0 > > > Thanks for any help > Konrad >