Я новичок в OSGi. Я использую Apache Felix на Android. Я установил системные пакеты для экспорта системным пакетом, как показано ниже:
/** Packages exported by the system bundle. */
String SYSTEM_PACKAGES =
"org.osgi.framework;version=\"1.6.0\"," +
"org.osgi.framework.launch;version=\"1.0.0\"," +
"org.osgi.framework.wiring;version=\"1.0.0\"," +
"org.osgi.framework.startlevel;version=\"1.0.0\"," +
"org.osgi.framework.hooks.bundle;version=\"1.0.0\"," +
"org.osgi.framework.hooks.resolver;version=\"1.0.0\"," +
"org.osgi.framework.hooks.service;version=\"1.1.0\"," +
"org.osgi.framework.hooks.weaving;version=\"1.0.0\"," +
"org.osgi.service.packageadmin;version=\"1.2.0\"," +
"org.osgi.service.startlevel;version=\"1.1.0\"," +
"org.osgi.service.url;version=\"1.0.0\"," +
"org.osgi.util.tracker;version=\"1.5.0\"";
Map map = new HashMap();
map.put ( "org.osgi.framework.system.packages" , SYSTEM_PACKAGES );
// I set more properties ...
felix = new Felix ( map );
felix.start();
Однако, когда я пытаюсь установить пакет ConfigAdmin, он выдает исключение BundleException:
org.osgi.framework.BundleException: Unresolved constraint in bundle
org.apache.felix.configadmin [1]: Unable to resolve 1.0: missing requirement [1.0]
osgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.4.0)
(!(version>=2.0.0)))
Почему отсутствует это требование, когда я экспортировал пакет org.osgi.framework из системного пакета версии 1.6.0? Я проверил правильность установки системного свойства, выполнив:
// DEBUG
Toast.makeText ( getApplicationContext() ,
felix.getBundleContext().getProperty ( "org.osgi.framework.system.packages" ) ,
Toast.LENGTH_LONG ).show();
Возможно, это простая ошибка с моей стороны. Кто-нибудь может мне помочь?
Спасибо!