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