title: OSGi ClassNotFoundException
body: <p>I am trying to run the example from Modular Java book and facing a ClassNotFoundException. The gist of the error is the I have 2 bundles. </p>
  
  <p>Bundle 1 is called Index. 
  Bundle 2 is a wrapped bundle of Compass project. </p>
  
  <p>Bundle 1 uses Bundle 2 and has the packages which it uses from Bundle 2 declared in "Import-Package" header in its manifest. The same packages are exported by Bundle 2 as well. </p>
  
  <p>Classes of Bundle 2 used by Index (Bundle 1), call few more classes which are internal to Bundle 2. The packages of these classes are exported by Bundle 2 as well. But whenever I deploy these on Felix (Using Pax-runner), the start fails with the following error.</p>
  
  <pre><code>[FelixDispatchQueue] DEBUG main-findmyjar.index - BundleEvent STOPPED - main-findmyjar.index
  ERROR: Bundle main-findmyjar.index [7] Error starting file:bundles/main-findmyjar.index_1.0.0.SNAPSHOT.jar (org.osgi.framework.BundleException: Activator start error in bundle main-findmyjar.index [7].)
  org.compass.core.config.ConfigurationException: Failed to instantiate [org.compass.core.config.binding.metadata.AsmMetaDataReader], please verify class type at setting [compass.scanner.reader]; nested exception is java.lang.ClassNotFoundException: org.compass.core.config.binding.metadata.AsmMetaDataReader
  java.lang.ClassNotFoundException: org.compass.core.config.binding.metadata.AsmMetaDataReader
          at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
          at java.security.AccessController.doPrivileged(Native Method)
          at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
          at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
          at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
          at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
          at java.lang.Class.forName0(Native Method)
          at java.lang.Class.forName(Class.java:247)
          at org.compass.core.util.ClassUtils.forName(ClassUtils.java:90)
          at org.compass.core.config.CompassSettings.getSettingAsInstance(CompassSettings.java:304)
          at org.compass.core.config.binding.metadata.MetaDataReaderFactory.getMetaDataReader(MetaDataReaderFactory.java:35)
          at org.compass.core.config.binding.AbstractClassMetaDataMappingBinding.setUpBinding(AbstractClassMetaDataMappingBinding.java:24)
          at org.compass.annotations.config.binding.AnnotationsMappingBinding.setUpBinding(AnnotationsMappingBinding.java:93)
          at org.compass.core.config.CompassMappingBinding.setUpBinding(CompassMappingBinding.java:56)
          at org.compass.core.config.CompassConfiguration.getMappingBinding(CompassConfiguration.java:121)
          at org.compass.core.config.CompassConfiguration.addClass(CompassConfiguration.java:500)
          at org.gt.osgi.findmyjar.index.internal.Activator.getCompass(Activator.java:40)
          at org.gt.osgi.findmyjar.index.internal.Activator.start(Activator.java:35)
          at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:645)
          at org.apache.felix.framework.Felix.activateBundle(Felix.java:1977)
          at org.apache.felix.framework.Felix.startBundle(Felix.java:1895)
          at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1191)
          at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:295)
          at java.lang.Thread.run(Thread.java:662)
  [FelixDispatchQueue] DEBUG main-findmyjar.index - FrameworkEvent ERROR - main-findmyjar.index
  org.osgi.framework.BundleException: Activator start error in bundle main-findmyjar.index [7].
          at org.apache.felix.framework.Felix.activateBundle(Felix.java:2027)
          at org.apache.felix.framework.Felix.startBundle(Felix.java:1895)
          at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1191)
          at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:295)
          at java.lang.Thread.run(Thread.java:662)
  Caused by: org.compass.core.config.ConfigurationException: Failed to instantiate [org.compass.core.config.binding.metadata.AsmMetaDataReader], please verify class type at setting [compass.scanner.reader]; nested exception is java.lang.ClassNotFoundException: org.compass.core.config.binding.metadata.AsmMetaDataReader
          at org.compass.core.config.CompassSettings.getSettingAsInstance(CompassSettings.java:306)
          at org.compass.core.config.binding.metadata.MetaDataReaderFactory.getMetaDataReader(MetaDataReaderFactory.java:35)
          at org.compass.core.config.binding.AbstractClassMetaDataMappingBinding.setUpBinding(AbstractClassMetaDataMappingBinding.java:24)
          at org.compass.annotations.config.binding.AnnotationsMappingBinding.setUpBinding(AnnotationsMappingBinding.java:93)
          at org.compass.core.config.CompassMappingBinding.setUpBinding(CompassMappingBinding.java:56)
          at org.compass.core.config.CompassConfiguration.getMappingBinding(CompassConfiguration.java:121)
          at org.compass.core.config.CompassConfiguration.addClass(CompassConfiguration.java:500)
          at org.gt.osgi.findmyjar.index.internal.Activator.getCompass(Activator.java:40)
          at org.gt.osgi.findmyjar.index.internal.Activator.start(Activator.java:35)
          at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:645)
          at org.apache.felix.framework.Felix.activateBundle(Felix.java:1977)
          ... 4 more
  Caused by: java.lang.ClassNotFoundException: org.compass.core.config.binding.metadata.AsmMetaDataReader
          at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
          at java.security.AccessController.doPrivileged(Native Method)
          at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
          at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
          at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
          at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
          at java.lang.Class.forName0(Native Method)
          at java.lang.Class.forName(Class.java:247)
          at org.compass.core.util.ClassUtils.forName(ClassUtils.java:90)
          at org.compass.core.config.CompassSettings.getSettingAsInstance(CompassSettings.java:304)
          ... 14 more
  [FelixDispatchQueue] DEBUG org.apache.felix.framework - BundleEvent STARTED - org.apache.felix.framework
  [FelixDispatchQueue] DEBUG org.apache.felix.framework - FrameworkEvent STARTED - org.apache.felix.framework
  </code></pre>
  
  <p>Any clues of what could be the problem ?</p>
  
  <p>Here's the manifest.</p>
  
  <pre><code>Manifest-Version: 1.0
  Export-Package: org.gt.osgi.findmyjar.index;uses:="org.gt.osgi.findmyj
  ar.domain";version="1.0.0.SNAPSHOT"
  Private-Package: org.gt.osgi.findmyjar.index.internal
  Ignore-Package: org.gt.osgi.findmyjar.index.internal   
  Built-By: tyagig
  Tool: Bnd-0.0.255
  Bundle-Name: main-findmyjar.index
  Created-By: Apache Maven Bundle Plugin
  Build-Jdk: 1.6.0_32
  Bundle-Version: 1.0.0.SNAPSHOT
  Bnd-LastModified: 1357910690482
  Bundle-ManifestVersion: 2
  Bundle-Activator: org.gt.osgi.findmyjar.index.internal.Activator
  Bundle-Description: Generated using Pax-Construct
  Bundle-SymbolicName: main-findmyjar.index
  Import-Package: org.compass.core,org.compass.core.config,org.compass.c
  ore.config.binding.metadata,org.gt.osgi.findmyjar.domain;version="1.0
  .0.SNAPSHOT",org.gt.osgi.findmyjar.index;version="1.0.0.SNAPSHOT",org
  .osgi.framework
  </code></pre>