首页 > 解决方案 > Stackdriver 在有“google-api-services-compute”时监控 nosuchmethoderror

问题描述

当我依赖于 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-enginegoogle-cloud-stackdriver

解决方案


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


推荐阅读