ClassCastException with Apache Karaf and Amdatu Web

2015-06-17 16:43:43,431 | WARN  | karaf-sdm/deploy | fileinstall                      | 7 - org.apache.felix.fileinstall - 3.4.2 | Error while starting bundle: file:/opt/karaf-sdm/deploy/org.amdatu.web.rest.wink-2.0.2.jar
org.osgi.framework.BundleException: Activator start error in bundle org.amdatu.web.rest.wink [161].
	at org.apache.felix.framework.Felix.activateBundle(Felix.java:2196)[org.apache.felix.framework-4.2.1.jar:]
	at org.apache.felix.framework.Felix.startBundle(Felix.java:2064)[org.apache.felix.framework-4.2.1.jar:]
	at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:955)[org.apache.felix.framework-4.2.1.jar:]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1245)[7:org.apache.felix.fileinstall:3.4.2]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1217)[7:org.apache.felix.fileinstall:3.4.2]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.startAllBundles(DirectoryWatcher.java:1207)[7:org.apache.felix.fileinstall:3.4.2]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:504)[7:org.apache.felix.fileinstall:3.4.2]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:358)[7:org.apache.felix.fileinstall:3.4.2]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:310)[7:org.apache.felix.fileinstall:3.4.2]
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
	at org.apache.felix.dm.ServiceUtil.getRankingAsInteger(ServiceUtil.java:54)[150:org.apache.felix.dependencymanager:3.1.0]
	at org.apache.felix.dm.ServiceUtil.getRanking(ServiceUtil.java:42)[150:org.apache.felix.dependencymanager:3.1.0]
	at org.apache.felix.dm.tracker.ServiceTracker$Tracked.setInitial(ServiceTracker.java:1059)[150:org.apache.felix.dependencymanager:3.1.0]
	at org.apache.felix.dm.tracker.ServiceTracker.open(ServiceTracker.java:371)[150:org.apache.felix.dependencymanager:3.1.0]
	at org.apache.felix.dm.tracker.ServiceTracker.open(ServiceTracker.java:311)[150:org.apache.felix.dependencymanager:3.1.0]
	at org.apache.felix.dm.tracker.ServiceTracker.open(ServiceTracker.java:287)[150:org.apache.felix.dependencymanager:3.1.0]
	at org.apache.felix.dm.impl.dependencies.ServiceDependencyImpl.start(ServiceDependencyImpl.java:419)[150:org.apache.felix.dependencymanager:3.1.0]
	at org.apache.felix.dm.impl.ComponentImpl.startTrackingOptional(ComponentImpl.java:708)[150:org.apache.felix.dependencymanager:3.1.0]
	at org.apache.felix.dm.impl.ComponentImpl.bindService(ComponentImpl.java:626)[150:org.apache.felix.dependencymanager:3.1.0]
	at org.apache.felix.dm.impl.ComponentImpl.access$400(ComponentImpl.java:52)[150:org.apache.felix.dependencymanager:3.1.0]
	at org.apache.felix.dm.impl.ComponentImpl$7.run(ComponentImpl.java:181)[150:org.apache.felix.dependencymanager:3.1.0]
	at org.apache.felix.dm.impl.SerialExecutor$1.run(SerialExecutor.java:47)[150:org.apache.felix.dependencymanager:3.1.0]
	at org.apache.felix.dm.impl.SerialExecutor.scheduleNext(SerialExecutor.java:84)[150:org.apache.felix.dependencymanager:3.1.0]
	at org.apache.felix.dm.impl.SerialExecutor.access$000(SerialExecutor.java:33)[150:org.apache.felix.dependencymanager:3.1.0]
	at org.apache.felix.dm.impl.SerialExecutor$1.run(SerialExecutor.java:50)[150:org.apache.felix.dependencymanager:3.1.0]
	at org.apache.felix.dm.impl.SerialExecutor.scheduleNext(SerialExecutor.java:84)[150:org.apache.felix.dependencymanager:3.1.0]
	at org.apache.felix.dm.impl.SerialExecutor.execute(SerialExecutor.java:68)[150:org.apache.felix.dependencymanager:3.1.0]
	at org.apache.felix.dm.impl.ComponentImpl.calculateStateChanges(ComponentImpl.java:231)[150:org.apache.felix.dependencymanager:3.1.0]
	at org.apache.felix.dm.impl.ComponentImpl.start(ComponentImpl.java:399)[150:org.apache.felix.dependencymanager:3.1.0]
	at org.apache.felix.dm.DependencyManager.add(DependencyManager.java:169)[150:org.apache.felix.dependencymanager:3.1.0]
	at org.amdatu.web.rest.wink.Activator.init(Activator.java:52)[161:org.amdatu.web.rest.wink:2.0.2]
	at org.apache.felix.dm.DependencyActivatorBase.start(DependencyActivatorBase.java:76)[150:org.apache.felix.dependencymanager:3.1.0]
	at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:645)[org.apache.felix.framework-4.2.1.jar:]
	at org.apache.felix.framework.Felix.activateBundle(Felix.java:2146)[org.apache.felix.framework-4.2.1.jar:]

The problem is that the OSGi service property service.ranking must be an Integer (not only a number but of type Integer).

The bundle karaf.scr.command has a service.ranking value defined without a specific type (which defaults to a type of String). This caused an error when using the felix depenedency manager which expects an Integer.

One solution is to stop the bundle (if you don't need it).

Tested with Apache Karaf 3.0.3.