Интеграция xero (шлюз выставления счетов) в apache felix (osgi)

У меня есть проект с несколькими модулями в karaf (версия 3.0.3), и мне нужно было добавить одну зависимость к Xero API (шлюз для выставления счетов) — https://github.com/XeroAPI/Xero-Java

Я использую реализацию OSGI через felix apache. В модуле я добавил все зависимости от Xero, они находятся в pom ниже.

Pom.xml

  <dependency>
    <groupId>com.github.xeroapi</groupId>
    <artifactId>xero-java</artifactId>
    <version>${xero-java.version}</version>
  </dependency>
  <dependency>
    <groupId>com.github.xeroapi</groupId>
    <artifactId>xeroapi-schemas</artifactId>
    <version>${xero-schemas.version}</version>
  </dependency>
  <dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>${jaxb-api.version}</version>
  </dependency>
  <dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>${jaxb-core.version}</version>
  </dependency>
  <dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>${jaxb-impl.version}</version>
  </dependency>
  <dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>${javax-activation.version}</version>
  </dependency>
  <dependency>
    <groupId>org.threeten</groupId>
    <artifactId>threetenbp</artifactId>
    <version>${threetenbp.version}</version>
  </dependency>

      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
            <Import-Package>!com.google.api.client.http,*</Import-Package>
            <Embed-Dependency>com.google.api.client.http</Embed-Dependency>
          </instructions>
        </configuration>
      </plugin>

Вся реализация была развернута и скомпилирована, но при запуске karaf я получил следующую ошибку.

Бревенчатый караф

2019-07-19 15:44:19,812 | ОШИБКА | lixDispatchQueue | Прослушиватель развертывания функций | 22 — org.apache.karaf.deployer.features — 3.0.3 | Невозможно установить функции java.lang.Exception: не удалось запустить пакет mvn:com.xtpo.im/im-bll-impl/0.2-SNAPSHOT в функциях be-invoice-mgmt-0.2-SNAPSHOT: неразрешенное ограничение в пакете com.xtpo. im.im-bll-impl [368]: невозможно разрешить 368.0: отсутствует требование [368.0] osgi.wiring.package; (osgi.wiring.package=com.google.api.client.http) в org.apache.karaf.features.internal.FeaturesServiceImpl.startBundle(FeaturesServiceImpl.java:504)[21:org.apache.karaf.features.core:3.0.3] на org.apache.karaf.features.internal.FeaturesServiceImpl.installFeatures(FeaturesServiceImpl.java:459)[21:org.apache.karaf.features.core:3.0.3] в Proxya6f8789a_dbdc_4181_b0eb_837248e8cb78.installFeatures (неизвестный источник) [:] в Proxycbafeabb_12c9_47e3_94d6_f999d20117fa.installFeatures (неизвестный источник) [:] в org.apache.karaf.deployer.features.FeatureDeploymentListener.bundleChanged(FeatureDeploymentListener.java:213)[22:org.apache.karaf.deployer.features:3.0.3] в org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:868)[org.apache.felix.framework-4.2.1.jar:] в org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:789)[org.apache.felix.framework-4.2.1.jar:] в org.apache.felix.framework.util.EventDispatcher.run(EventDispatcher.java:1088)[org.apache.felix.framework-4.2.1.jar:] в org.apache.felix.framework.util.EventDispatcher.access$000(EventDispatcher.java:54)[org.apache.felix.framework-4.2.1.jar:] в org.apache.felix.framework.util.EventDispatcher$1.run(EventDispatcher.java:101)[org.apache.felix.framework-4.2.1.jar:] в java.lang.Thread.run(Thread.java:748)[:1.8.0_211] Причина: org.osgi.framework.BundleException: неразрешенное ограничение в пакете com.xtpo.im.im-bll-impl [368]: невозможно разрешить 368.0: отсутствует требование [368.0] osgi.wiring.package; (osgi.wiring.package=com.google.api.client.http) в org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3974)[org.apache.felix.framework-4.2.1.jar:] в org.apache.felix.framework.Felix.startBundle(Felix.java:2037)[org.apache.felix.framework-4.2.1.jar:] в org.apache.felix.framework.BundleImpl.start(BundleImpl.java:955)[org.apache.felix.framework-4.2.1.jar:] в org.apache.felix.framework.BundleImpl.start(BundleImpl.java:942)[org.apache.felix.framework-4.2.1.jar:] в org.apache.karaf.features.internal.FeaturesServiceImpl.startBundle(FeaturesServiceImpl.java:501)[21:org.apache.karaf.features.core:3.0.3] ... еще 10

Проблема в com.google.api.client.http. Может ли кто-нибудь помочь мне решить эту проблему?

В функциях файла у меня есть следующие зависимости:

особенности.xml

    <!--Xero dependencies-->
    <bundle>wrap:mvn:com.github.xeroapi/xero-java/${xero-java.version}</bundle>
    <bundle>wrap:mvn:com.github.xeroapi/xeroapi-schemas/${xero-schemas.version}</bundle>
    <bundle>wrap:mvn:javax.xml.bind/jaxb-api/${jaxb-api.version}</bundle>
    <bundle>wrap:mvn:com.sun.xml.bind/jaxb-impl/${jaxb-impl.version}</bundle>
    <bundle>wrap:mvn:javax.activation/activation/${javax-activation.version}</bundle>
    <bundle>wrap:mvn:org.threeten/threetenbp/${threetenbp.version}</bundle>

Спасибо всем

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Феликс не может разрешить пакет com.google.api.client.http. Вы должны либо развернуть пакет, содержащий пакет, либо встроить его в свой собственный пакет. Пакет доступен из артефакта maven com.google.http-клиент:google-http-клиент.

Вы можете настроить maven-bundle-plugin на вставлять зависимости области компиляции и добавить зависимость к артефакту google http-client, указанному выше:

<dependency>
  <groupId>com.google.http-client</groupId>
  <artifactId>google-http-client</artifactId>
  <version>1.30.2</version>
</dependency>

Может потребоваться некоторая настройка версии. Обратите внимание, что артефакт упакован в пакет OSGi, поэтому вы также можете попробовать загрузить его и развернуть на karaf вместе с собственным пакетом (вместо его встраивания).

Спасибо, @gjoranv. Я добавляю пакет (версия 1.29.0) и получаю следующую ошибку: java.lang.Exception: Не удалось запустить пакет mvn:com.xpto.im/im-bll-impl/0.2-SNAPSHOT в функциях invoice-mgmt-0.2-SNAPSHOT: неразрешенное ограничение в пакете com.xpto.im.im-bll-impl [368]: невозможно разрешить 368.0: отсутствует требование [368.0] osgi.wiring.package; (&(osgi.wiring.package=com.google.api.client.http)(версия>=‌​1.29.0)(!(версия>=2‌​.0.0)))

roliveira 22.07.2019 12:42

В моем pom я использую плагин «maven-bundle-plugin» со следующей конфигурацией: <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <extensions>true </extensions> <configuration> <instructions> <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicN‌​ame> <Import-Package>!com.google.api.client.http,*</Import- Packag‌​e> <Embed-Dependency>com.google.api.client.http</Embed-Dependen‌​cy> </instructions> </configuration> </plugin>

roliveira 22.07.2019 12:45

Я думаю, что плагин maven-bundle-plugin соответствует только артефактуId, поэтому содержимое тега Embed-Dependency должно быть google-http-client-apache. Пожалуйста, попробуйте распаковать пакет, чтобы убедиться, что его классы действительно встроены. com.xtpo.im/im-bll-impl относится к набору, который вы создаете, верно?

gjoranv 22.07.2019 13:46

Да! У меня такая же ошибка: (&(osgi.wiring.package=com.google.api.client.http)(version>=‌​1.29.0)(!(version>=2‌​.0.0)))

roliveira 22.07.2019 14:54

Извините, я ошибся насчет артефакта maven. Я обновил свой ответ правильным.

gjoranv 22.07.2019 15:28

Хорошо, нет проблем. Теперь проблема в com.google.common.base. Unable to resolve 367.0: missing requirement [367.0] osgi.wiring.package; (&(osgi.wiring.package=com.google.api.client.http)(version>=‌​1.30.0)(!(version>=2‌​.0.0))) [caused by: Unable to resolve 370.0: missing requirement [370.0] osgi.wiring.package; (&(osgi.wiring.package=com.google.common.base)(version>=26.0‌​.0)(!(version>=27.0.‌​0)))]. Попробую гуаву (mvnrepository.com/artifact/com.google.guava/гуава). У вас есть другие решения?

roliveira 22.07.2019 15:52

Другие вопросы по теме