java - ClassNotFoundException : io. opencensus.trace.propagation.TextFormat 未找到

标签 java apache-karaf google-http-client opencensus

我在 apache karaf 4.2.6 和 java 11 中有一个模块,可以验证 Google Play 中的购买收据。我正在使用 androidpublisher。

当它第一次发送请求时,我在 OpenCensusUtils 类中收到错误:

androidPublisher.purchases().products().get(packageName, productId, purchaseToken).execute()

java.lang.ClassNotFoundException:wrap_file__Users_USER_NAME_.m2_repository_io_opencensus_opencensus-contrib-http-util_0.22.1_opencensus-contrib-http-util-0.22.1.jar找不到io.opencensus.trace.propagation.TextFormat

在随后的时间里,我在 com.google.api.client.http.HttpRequest 类中遇到错误 private Final Tracer tracer = OpenCensusUtils.getTracer():

java.lang.NoClassDefFoundError:无法初始化类 com.google.api.client.http.OpenCensusUtils

这是依赖项:

    <dependency>
        <groupId>com.google.apis</groupId>
        <artifactId>google-api-services-androidpublisher</artifactId>
        <version>v3-rev92-1.25.0</version>
        <exclusions>
            <exclusion>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

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

    <dependency>
        <groupId>io.opencensus</groupId>
        <artifactId>opencensus-api</artifactId>
        <version>0.22.1</version>
    </dependency>
    <dependency>
        <groupId>io.opencensus</groupId>
        <artifactId>opencensus-contrib-http-util</artifactId>
        <version>0.22.1</version>
    </dependency>

此外,google-api-clientgoogle-http-client-jackson2google-oauth-client 的版本为 1.29.2

在 karaf 中,我看到库 opencensus-api 正在导出包含类 TextFormat 的包 io.opencensus.trace.propagation

我做错了什么?

最佳答案

我通过将 io.opencensus 和 io.grpc 添加到模块构建区域的 Private-Package 来解决,如下所示。它使它们嵌入本地。

....
 <build>
    <plugins>
      <plugin>
       ....
        <configuration>
          <instructions>
            <Bundle-SymbolicName> ${project.artifactId} </Bundle-SymbolicName>
            <Private-Package>
             META-INF.services;-split-package:=merge-first,
             com.google.*;-split-package:=merge-first,
             io.opencensus.*;-split-package:=merge-first,
             io.grpc.*;-split-package:=merge-first
            </Private-Package>
            ....

关于java - ClassNotFoundException : io. opencensus.trace.propagation.TextFormat 未找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56950415/

相关文章:

java do while 终止

java - 使用 Apache Karaf 容器和 Play 框架在标准 OSGi 上插入用户授权的最佳方法

rest - 增加 Karaf 中 Jetty 线程池的大小

osgi - 依赖于包的 OSGI 包(在 Karaf 下)的自然启动顺序是什么?

android - 如何使用 XmlObjectParser 和 XmlNamespaceDictionary? (谷歌-http-客户端)

java - 在 JFrame 中添加同一类的两个组件

java - 找不到 Maven 插件

java - 使用 google-http-client-xml 解析 xml : parsing xml element content as well as attributes using XmlObjectParser

security - 没有浏览器的独立应用授权?

Java 文件 - 您可以使用 readUTF 从文本文件中读取字符串吗?