有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

ApacheFelix(osgi)中的java集成xero(发票网关)

我有一个在karaf(3.0.3版)中有多个模块的项目,我需要向Xero API(发票网关)添加一个依赖项--https://github.com/XeroAPI/Xero-Java

我通过felix apache使用OSGI实现。在模块中,我向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:19812 |错误| lixDispatchQueue |功能部署侦听器| 22-org。阿帕奇。卡拉夫。部署者。功能-3.0.3 |无法安装功能 JAVAlang.异常:无法启动捆绑包mvn:com。xtpo。im/im bll impl/0.2-功能中的快照be-invoice-mgmt-0.2-快照:捆绑组件com中的未解决约束。xtpo。感应电动机。im bll impl[368]:无法解析368.0:缺少要求[368.0]osgi。装电线。包裹(osgi.willing.package=com.google.api.client.http) 在org。阿帕奇。卡拉夫。特征。内部的功能服务impl。startBundle(FeaturesServiceImpl.java:504)[21:org.apache.karaf.features.core:3.0.3] 在org。阿帕奇。卡拉夫。特征。内部的功能服务impl。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。阿帕奇。卡拉夫。部署者。特征。FeatureDeploymentListener。bundleChanged(FeatureDeploymentListener.java:213)[22:org.apache.karaf.deployer.features:3.0.3] 在org。阿帕奇。菲利克斯。框架util。事件调度员。invokeBundleListenerCallback(EventDispatcher.java:868)[org.apache.felix.framework-4.2.1.jar:] 在org。阿帕奇。菲利克斯。框架util。事件调度员。FireEventInstant(EventDispatcher.java:789)[org.apache.felix.framework-4.2.1.jar:] 在org。阿帕奇。菲利克斯。框架util。事件调度员。运行(EventDispatcher.java:1088)[org.apache.felix.framework-4.2.1.jar:] 在org。阿帕奇。菲利克斯。框架util。事件调度员。访问$000(EventDispatcher.java:54)[org.apache.felix.framework-4.2.1.jar:] 在org。阿帕奇。菲利克斯。框架util。1美元。运行(EventDispatcher.java:101)[org.apache.felix.framework-4.2.1.jar:] 在爪哇。朗。丝线。运行(Thread.java:748)[:1.8.0_211] 原因:org。奥斯基。框架BundleException:bundle com中未解析的约束。xtpo。感应电动机。im bll impl[368]:无法解析368.0:缺少要求[368.0]osgi。装电线。包裹(osgi.willing.package=com.google.api.client.http) 在org。阿帕奇。菲利克斯。框架菲利克斯。resolveBundleRevision(Felix.java:3974)[org.apache.Felix.framework-4.2.1.jar:] 在org。阿帕奇。菲利克斯。框架菲利克斯。startBundle(Felix.java:2037)[org.apache.Felix.framework-4.2.1.jar:] 在org。阿帕奇。菲利克斯。框架BundleImpl。start(BundleImpl.java:955)[org.apache.felix.framework-4.2.1.jar:] 在org。阿帕奇。菲利克斯。框架BundleImpl。start(BundleImpl.java:942)[org.apache.felix.framework-4.2.1.jar:] 在org。阿帕奇。卡拉夫。特征。内部的功能服务impl。startBundle(FeaturesServiceImpl.java:501)[21:org.apache.karaf.features.core:3.0.3] ... 还有10个

问题在于com。谷歌。应用程序编程接口。客户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>

谢谢大家


共 (1) 个答案

  1. # 1 楼答案

    Felix无法解析包com.google.api.client.http。您必须部署包含该包的捆绑包,或者将其嵌入到您自己的捆绑包中。该包可从maven工件com.google.http-client:google-http-client获得

    您可以将maven bundle插件配置为embed compile scoped dependencies,并向上面链接的google http客户端工件添加依赖项:

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

    可能需要对版本进行一些调整。请注意,该工件被打包为一个OSGi包,因此您也可以尝试下载它,并将其与您自己的包一起部署到karaf(而不是嵌入它)