Hi Tim,

> java.lang.ClassCastException:
> org.apache.felix.bundlerepository.impl.RepositoryAdminImpl cannot be
> cast to org.apache.felix.bundlerepository.RepositoryAdmin

This happens when the RepositoryAdmin interface is loaded from a
different classloader than where the RepositoryAdminImpl loads it
from.

You need to check that the bundle that runs your code has an import on
the org.apache.felix.bundlerepository package like this:
  Import-Package: org.apache.felix.bundlerepository;version="[1.0,2)"
and is wired to the same bundle where you get the RepositoryAdminImpl from.

> By the way, is there javadoc for Felix?  I can't seem to find any.

If you're looking for documentation on Felix, it might be best to look
for general OSGi Framework documentation. You can find information on
the Felix Framework in the OSGi Core R5 specs [1] or in one of the
many books and web articles about the OSGi framework.

For documentation about the Bundle Repository, it might be worth
looking at the OSGi R5 Enterprise Specs (also at [1]). Chapter 132
describes the OSGi Repository Service. Since version 2.0.x this is now
also implemented by Felix OBR so using that gives you a standard API
to work with the Repository.

Cheers,

David

[1] http://www.osgi.org/Download/Release5

On 5 August 2014 20:38, Tim McIver <[email protected]> wrote:
> Hello,
>
> I'm using Apache Felix in an embedded fashion.  I'm attempting to access
> my own bundle repository so I install and start the bundle repository
> bundle like so:
>
>         // install the Felix OBR bundle
>         Bundle obrBundle = null;
>         try {
>             obrBundle =
> m_felix.getBundleContext().installBundle("file:/home/tim/workspace/clojure/lambdaprime/metascrape-ui/lib/org.apache.felix.bundlerepository-2.0.2.jar");
>         } catch (BundleException e) {
>             System.err.println("Error installing Felix OBR bundle.");
>             e.printStackTrace();
>         }
>
>         // start the Felix OBR bundle
>         if (obrBundle != null) {
>             try {
>                 obrBundle.start();
>             } catch (BundleException e) {
>                 System.err.println("Could not start Felix OBR bundle.");
>                 e.printStackTrace();
>             }
>         }
>
> I have a private method to get a RepositoryAdmin:
>
>     private static RepositoryAdmin getRepositoryAdmin(BundleContext ctx) {
>         ServiceReference ref =
> ctx.getServiceReference(RepositoryAdmin.class.getName());
>         if (ref != null) {
>             return (RepositoryAdmin)ctx.getService(ref);
>         }
>         return null;
>     }
>
> But when this method is called, I get the following exception:
>
> java.lang.ClassCastException:
> org.apache.felix.bundlerepository.impl.RepositoryAdminImpl cannot be
> cast to org.apache.felix.bundlerepository.RepositoryAdmin
>
> I'm using felix.jar from the bin directory of of the 4.4.1 distribution
> and using org.apache.felix.bundlerepository-2.0.2.jar for the bundle
> repository.  Any ideas what my issue is?
>
> By the way, is there javadoc for Felix?  I can't seem to find any.
>
> Thanks,
> Tim
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to