ошибка felix maven-bundle-plugin (&(osgi.wiring.package=com.a.b.c)(версия›=xx.0.0)(!(версия›=yy.0.0)

я использую Apache Felix для реализации пакета osgi и использую его как встроенную структуру Felix для вызова boundle

вот мой плагин maven для сборки MANIFEST.MF:

<plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>3.5.0</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <Embed-Dependency>*;scope=compile|runtime</Embed-Dependency>
                    <Bundle-Activator>a.b.c.osgi.activator.Activator</Bundle-Activator>
                </instructions>
            </configuration>
        </plugin>

я создаю проект, а затем использую файл jar во встроенном felix, как это

BundleContext bundleContext = f.getBundleContext();
    Bundle bundle = bundleContext.installBundle(
            "file:/home/eclipse_workSpace/my-module/target/abc-1.1.0.jar");)

    String bName = bundle.getLocation();
    bundle.getRegisteredServices();
    bundle.getState();

    /* Bundle[] bls = bundleContext.getBundles(); */

    System.out.println("starting bundle " + bName);
    bundle.start();

когда я запускаю Boundle, я получаю это исключение

Исключение в потоке «основной» org.osgi.framework.BundleException: невозможно разрешить abc [1] (R 1.0): отсутствует требование [abc [1] (R 1.0)] osgi.wiring.package; (&(osgi.wiring.package=com.google.common.base)(версия>=21.0.0)(!(версия>=22.0.0))) Неразрешенные требования: [[abc [1](R 1.0) ] osgi.wiring.package; (&(osgi.wiring.package=com.google.common.base)(версия>=21.0.0)(!(версия>=22.0.0)))]

что я должен сделать, чтобы решить эту проблему?


person Ahmad R. Nazemi    schedule 06.02.2018    source источник


Ответы (1)


Это сообщение об ошибке означает, что ваш пакет зависит от Google Guava версии 21. В частности, эта строка:

missing requirement [a.b.c [1](R 1.0)] osgi.wiring.package; (&(osgi.wiring.package=com.google.common.base)(version>=21.0.0)(!(version>=22.0.0)))

... означает, что ваш пакет "abc" импортирует пакет com.google.common.base с версией больше или равной 21 и не больше или равной 22. Поскольку ваш пакет импортирует этот пакет, должен быть другой пакет в вашей OSGi Framework, которая экспортирует пакет.

Решение состоит в том, чтобы убедиться, что Guava 21 установлен в вашей OSGi Framework.

person Neil Bartlett    schedule 06.02.2018
comment
как я могу установить этот пакет в OSGI Framework? правильно ли моя конфигурация pom в maven-bundle-plugin? эта установка должна быть автоматизирована с помощью maven-bundle-plugin в MANIFEST.MF? - person Ahmad R. Nazemi; 07.02.2018
comment
Вы устанавливаете его так же, как вы устанавливали свой первый пакет. Согласно образцу кода, вы установили его, вызвав bundleContext.installBundle. - person Neil Bartlett; 07.02.2018