【问题标题】:Stackdriver monitoring nosuchmethoderror when having a 'google-api-services-compute'Stackdriver 在有“google-api-services-compute”时监控 nosuchmethoderror
【发布时间】:2020-04-27 06:41:18
【问题描述】:

当我依赖于 google-api-services-compute 时,使用 Stackdriver Monitoring 客户端的 java 应用程序出错。

例外:

java.lang.NoSuchMethodError: 
com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;CLjava/lang/Object;)V
        at io.grpc.Metadata$Key.validateName(Metadata.java:629)
        at io.grpc.Metadata$Key.<init>(Metadata.java:637)
        at io.grpc.Metadata$Key.<init>(Metadata.java:567)
        at io.grpc.Metadata$AsciiKey.<init>(Metadata.java:742)
        at io.grpc.Metadata$AsciiKey.<init>(Metadata.java:737)
        at io.grpc.Metadata$Key.of(Metadata.java:593)
        at io.grpc.Metadata$Key.of(Metadata.java:589)
        at com.google.api.gax.grpc.GrpcHeaderInterceptor.<init>(GrpcHeaderInterceptor.java:60)
        at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createSingleChannel(InstantiatingGrpcChannelProvider.java:220)
        at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createChannel(InstantiatingGrpcChannelProvider.java:193)
        at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.getTransportChannel(InstantiatingGrpcChannelProvider.java:185)
        at com.google.api.gax.rpc.ClientContext.create(ClientContext.java:155)
        at com.google.cloud.monitoring.v3.stub.GrpcMetricServiceStub.create(GrpcMetricServiceStub.java:176)
        at com.google.cloud.monitoring.v3.stub.MetricServiceStubSettings.createStub(MetricServiceStubSettings.java:188)
        at com.google.cloud.monitoring.v3.MetricServiceClient.<init>(MetricServiceClient.java:157)
        at com.google.cloud.monitoring.v3.MetricServiceClient.create(MetricServiceClient.java:138)
        at com.google.cloud.monitoring.v3.MetricServiceClient.create(MetricServiceClient.java:129)
        at com.vmware.adapter3.gcp.builder.GoogleCloudMonitoringManager.testGoogleCloudMonitoringConnection(GoogleCloudMonitoringManager.java:356)

关于创建方法: MetricServiceClient metricServiceClient = MetricServiceClient.create();

仅当 Maven 依赖项时:

 <dependency>
     <groupId>com.google.code.gson</groupId>
     <artifactId>gson</artifactId>
     <version>${project.gson.version}</version>
</dependency>
<dependency>
  <groupId>com.google.http-client</groupId>
  <artifactId>google-http-client-jackson2</artifactId>
  <version>${project.http.version}</version>
</dependency>
<dependency>
  <groupId>com.google.oauth-client</groupId>
  <artifactId>google-oauth-client-jetty</artifactId>
  <version>${project.oauth.version}</version>
</dependency>
<dependency>
  <groupId>com.google.apis</groupId>
  <artifactId>google-api-services-compute</artifactId>
  <version>v1-rev158-1.23.0</version>
</dependency>
 <dependency>
  <groupId>com.google.apis</groupId>
  <artifactId>google-api-services-storage</artifactId>
  <version>v1-rev158-1.25.0</version>
</dependency>
  <dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-monitoring</artifactId>
      <version>1.98.0</version>

请帮我解决这个问题。

【问题讨论】:

    标签: google-app-engine google-cloud-stackdriver


    【解决方案1】:

    问题似乎是小写的函数名“create”:它必须以大写的“C”开头,即“Create”,如“MetricServiceClient.Create()”。

    【讨论】:

    • 在 MEtricServiceClient 中看不到大写的 Create 方法。尝试 (MetricServiceClient mServiceClient = MetricServiceClient.create()) {
    • 嗨,我不明白你的意思。可以尝试将函数的首字母设置为大写并执行代码吗?
    • 使用 1.98 的 googles-cloud-monitoring jar,共有三个 create 方法(都是小案例 create() 方法)来构造具有默认或给定设置的 MetricServiceClient 实例。就像最终的 MetricServiceClient 客户端 = MetricServiceClient.create();
    • 您可以尝试使用最新版本,即 1.99,并告诉我它是否有效?
    • 谢谢@asbovelw,我已经按照上面的建议尝试了更新版本的(1.99),但没有成功。解决了这个问题,这是由于番石榴罐冲突问题。主进程(root)正在从另一个应用程序盯着。根据 maven,将使用其节点最接近依赖关系树中根(另一个应用程序)的库版本。在这种情况下,guava 18.0 正在从 GCP 监控客户端库获取调用
    猜你喜欢
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 1970-01-01
    • 2018-12-10
    相关资源
    最近更新 更多