title: Using an external java library in OSGI bundle
body: <p>I want to use this java library [1]enj-library in my OSGI bundle that will be executed under KURA eclipse platform.</p>
  
  <p>I compiled the library as jar and then I created a new plugin project under eclipse "Plug-in from existing JAR archive"</p>
  
  <p>then I tried to add it to my bundle, but it did not work:
  1.I tried to import the bundle and I verified that the version is correct in both manifest files in the import and the export, but I gopt this error:</p>
  
  <pre><code>org.osgi.framework.BundleException: The bundle "org.eclipse.kura.binding.enocean_1.0.0.201506181418 [70]" could not be resolved. Reason: Missing Constraint: Import-Package: it.polito.elite.enocean.enj.communication; version="1.0.0"
      at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolverError(AbstractBundle.java:1332)
      at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolutionFailureException(AbstractBundle.java:1316)
      at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:323)
      at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:300)
      at org.tigris.mtoolkit.iagent.internal.rpc.RemoteBundleAdminImpl.startBundle(RemoteBundleAdminImpl.java:230)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at org.tigris.mtoolkit.iagent.internal.pmp.InvocationThread.run(InvocationThread.java:54)
      at org.tigris.mtoolkit.iagent.internal.utils.ThreadPool$Worker.run(ThreadPool.java:179)
      at java.lang.Thread.run(Thread.java:724)
  </code></pre>
  
  <p>2.I added it as a required bundle but the I got the same error:</p>
  
  <pre><code>org.osgi.framework.BundleException: The bundle "org.eclipse.kura.binding.enocean_1.0.0.201506181349 [70]" could not be resolved. Reason: Missing Constraint: Require-Bundle: EnOceanJavaLibraryplugIn; bundle-version="1.0.0"
      at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolverError(AbstractBundle.java:1332)
      at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolutionFailureException(AbstractBundle.java:1316)
      at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:323)
      at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:300)
      at org.tigris.mtoolkit.iagent.internal.rpc.RemoteBundleAdminImpl.startBundle(RemoteBundleAdminImpl.java:230)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at org.tigris.mtoolkit.iagent.internal.pmp.InvocationThread.run(InvocationThread.java:54)
      at org.tigris.mtoolkit.iagent.internal.utils.ThreadPool$Worker.run(ThreadPool.java:179)
      at java.lang.Thread.run(Thread.java:724)
  </code></pre>
  
  <p>3.I added in the class path and my bundle started but I got the class not found exception</p>
  
  <pre><code>java.lang.ClassNotFoundException: org.eclipse.kura.binding.enocean.EnOcean
      at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
      at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
      at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
      at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
      at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:340)
      at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
      at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1212)
      at org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance(ServiceComponent.java:493)
      at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance(ServiceComponentProp.java:272)
      at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:333)
      at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620)
      at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197)
      at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:473)
      at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:217)
      at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:816)
      at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:783)
      at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
      at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)
  </code></pre>
  
  <p>[1]<a href="https://github.com/dog-gateway/enj-library" rel="nofollow">https://github.com/dog-gateway/enj-library</a></p>
  
  <p>how can I include this library on my OSGI bundle?</p>
  
  <p>Thanks a lot for your help!</p>