Je dois mettre à disposition une bibliothèque pour certains paquets. Cette bibliothèque utilise RMI, elle a donc besoin (pour autant que je sache, au moins) d'utiliser le chargeur de classe système pour fonctionner (j'ai essayé de "osgi-fy" la bibliothèque, ce qui donne classcastexceptions à l'exécution). Donc, ce que j'ai fait était de supprimer les dépendances des bundles qui utilisent cette bibliothèque, les compiler avec la bibliothèque incluse dans la propriété jars.extra.classpath (dans le build.properties du projet eclipse).Comment configurer un package à l'échelle du système dans osgi?
Puis j'ajouté
org.osgi.framework.bootdelegation=com.blipsystems.*
dans le fichier de configuration de felix et a commencé le conteneur felix avec la ligne de commande followin:
java -classpath lib/blipnetapi.jar -jar bin/felix.jar
..which à tour de rôle throwed un NoClassDefFoundException pour une classe de bibliothèque blipnetapi.jar:
ERROR: Error starting file:/home/frza/felix/load/BlipnetApiOsgiService_1.0.0.1.jar (org.osgi.framework.BundleException: Activator start error in bundle BlipnetApiOsgiService [30].) java.lang.NoClassDefFoundError: com/blipsystems/blipnet/api/util/BlipNetSecurityManager at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389) at java.lang.Class.getConstructor0(Class.java:2699) at java.lang.Class.newInstance0(Class.java:326) at java.lang.Class.newInstance(Class.java:308) at org.apache.felix.framework.Felix.createBundleActivator(Felix.java:3525) at org.apache.felix.framework.Felix.activateBundle(Felix.java:1694) at org.apache.felix.framework.Felix.startBundle(Felix.java:1621) at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1076) at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:264) at java.lang.Thread.run(Thread.java:619) Caused by: java.lang.ClassNotFoundException: com.blipsystems.blipnet.api.util.BlipNetSecurityManager at org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:726) at org.apache.felix.framework.ModuleImpl.access$100(ModuleImpl.java:60) at org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1631) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) ... 11 more
Donc ma question est: suis-je manquant donc méthing? J'ai fait une bêtise?