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

Reply via email to