Hello, I am using Karaf 4.1.2 with the latest snapshot 4.1.3 for the bundle features-core.
I was missing in my karaf distribution the configuration of the 'endorsed' folder. I have added in my "core" kar archive <library/> tags in order to fix this. However, since this modification, I have randomly a NPE on the FeaturesServiceImpl$2.filterMatches() (see below). This NPE is thrown because a requirement is not found in the "bndRes" map.. Bundle sourceBundle = requirement.getRevision().getBundle(); Resource sourceResource = bndToRes.get(sourceBundle); <-- sourceResource is null here The requirement come from a blueprint file deployed in the "deploy" folder. It's present on my distribution from the start (it's not copied by a feature). I looking for advices in order to fix this issue :-) My Kar use this feature : <feature name="core" version="${project.version}" hidden="true"> <config name="org.apache.karaf.features"> serviceRequirements = disable </config> <library export="true" type="boot"> mvn:com.myapp/branding/${project.version}</library> <library>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xerces/2.11.0_1;type:=endorsed;export:=true;delegate:=true</library> <library>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxp-api-1.4/${servicemix.specs.version};type:=endorsed;export:=true</library> <library>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxb-api-2.2/${servicemix.specs.version};type:=endorsed;export:=true</library> <library>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxws-api-2.2/${servicemix.specs.version};type:=endorsed;export:=true</library> <library>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.saaj-api-1.3/${servicemix.specs.version};type:=endorsed;export:=true</library> <library>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.activation-api-1.1/${servicemix.specs.version};type:=endorsed;export:=true</library> <library>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.stax-api-1.2/${servicemix.specs.version};type:=endorsed;export:=true</library> <library>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xalan/2.7.2_3;type:=endorsed;export:=true</library> <library>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xalan-serializer/2.7.2_1;type:=endorsed;export:=true</library> <library>mvn:javax.annotation/javax.annotation-api/1.2;type:=endorsed;export:=true</library> <library>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.activator/${servicemix.specs.version};type:=default;export:=true</library> <library>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.locator/${servicemix.specs.version};type:=default;export:=true</library> <library>mvn:net.java.dev.jna/jna/${jna.version};type:=boot;export:=false</library> <library>mvn:net.java.dev.jna/jna-platform/${jna.version};type:=boot;export:=false</library> </feature> The exception : 13:03:12.796 [Framework Event Dispatcher: org.eclipse.osgi.internal.framework.EquinoxEventPublisher@5700d6b1] ERROR org.eclipse.osgi - FrameworkEvent ERROR - org.eclipse.osgi java.lang.RuntimeException: Exception in org.apache.karaf.features.internal.service.FeaturesServiceImpl$2.filterMatches() at org.eclipse.osgi.internal.framework.OSGiFrameworkHooks$CoreResolverHookFactory.handleHookException(OSGiFrameworkHooks.java:164) ~[?:?] at org.eclipse.osgi.internal.framework.OSGiFrameworkHooks$CoreResolverHookFactory$CoreResolverHook.filterMatches(OSGiFrameworkHooks.java:308) ~[?:?] at org.eclipse.osgi.container.ModuleResolver$ResolveProcess.filterProviders(ModuleResolver.java:638) ~[?:?] at org.eclipse.osgi.container.ModuleResolver$ResolveProcess.filterProviders(ModuleResolver.java:624) ~[?:?] at org.eclipse.osgi.container.ModuleResolver$ResolveProcess.findProviders0(ModuleResolver.java:605) ~[?:?] at org.eclipse.osgi.container.ModuleResolver$ResolveProcess.resolveDynamic(ModuleResolver.java:1266) ~[?:?] at org.eclipse.osgi.container.ModuleResolver$ResolveProcess.resolve(ModuleResolver.java:923) ~[?:?] at org.eclipse.osgi.container.ModuleResolver.resolveDynamicDelta(ModuleResolver.java:136) ~[?:?] at org.eclipse.osgi.container.ModuleContainer.resolveDynamic(ModuleContainer.java:554) ~[?:?] at org.eclipse.osgi.internal.loader.BundleLoader.findDynamicSource(BundleLoader.java:1113) ~[?:?] at org.eclipse.osgi.internal.loader.BundleLoader.findResource(BundleLoader.java:610) ~[?:?] at org.eclipse.osgi.internal.loader.ModuleClassLoader.getResource(ModuleClassLoader.java:202) ~[?:?] at org.eclipse.osgi.internal.framework.EquinoxBundle.getResource(EquinoxBundle.java:532) ~[?:?] at org.apache.servicemix.specs.activator.Activator.register(Activator.java:138) ~[?:?] at org.apache.servicemix.specs.activator.Activator.bundleChanged(Activator.java:106) ~[?:?] at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:903) ~[?:?] at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) ~[?:?] at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) ~[?:?] at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213) ~[?:?] at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120) ~[?:?] at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) ~[?:?] at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:156) ~[?:?] at org.eclipse.osgi.container.ModuleContainer.applyDelta(ModuleContainer.java:705) ~[?:?] at org.eclipse.osgi.container.ModuleContainer.resolveAndApply(ModuleContainer.java:497) ~[?:?] at org.eclipse.osgi.container.ModuleContainer.resolve(ModuleContainer.java:443) ~[?:?] at org.eclipse.osgi.container.ModuleContainer.resolve(ModuleContainer.java:433) ~[?:?] at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.resolveBundles(ModuleContainer.java:1299) ~[?:?] at org.apache.karaf.features.internal.service.FeaturesServiceImpl.resolveBundles(FeaturesServiceImpl.java:1439) ~[?:?] at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:877) ~[?:?] at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1234) ~[?:?] at org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$0(FeaturesServiceImpl.java:1133) ~[?:?] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:?] at java.lang.Thread.run(Thread.java:745) [?:?] Caused by: org.osgi.framework.BundleException: Exception in org.apache.karaf.features.internal.service.FeaturesServiceImpl$2.filterMatches() ... 35 more Caused by: java.lang.NullPointerException at org.apache.karaf.features.internal.service.FeaturesServiceImpl$2.filterMatches(FeaturesServiceImpl.java:1404) ~[?:?] at org.eclipse.osgi.internal.framework.OSGiFrameworkHooks$CoreResolverHookFactory$CoreResolverHook.filterMatches(OSGiFrameworkHooks.java:306) ~[?:?] ... 33 more Regards, Jérémie