You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

引入google-api-services-compute后Stackdriver监控报NoSuchMethodError求助

解决Guava版本冲突导致的NoSuchMethodError问题

这是典型的Guava版本依赖冲突问题,核心原因是不同Google Cloud组件引入了不兼容的Guava版本,导致运行时加载了旧版本Guava,而gRPC(Monitoring客户端底层依赖)需要的方法在旧版本中不存在。

问题根源

java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;CLjava/lang/Object;)V 这个异常明确指向:

  • google-api-services-compute:v1-rev158-1.23.0 依赖的是较旧版本的Guava
  • google-cloud-monitoring:1.98.0 依赖的是较新版本的Guava,gRPC需要新版本中提供的特定签名的checkArgument方法

Maven解析依赖时,旧版本Guava可能被优先加载,覆盖了新版本,最终导致方法缺失。

解决方案

1. 排除旧版本Guava

在google-api-services-compute的依赖配置中,排除它自带的旧Guava:

<dependency>
    <groupId>com.google.apis</groupId>
    <artifactId>google-api-services-compute</artifactId>
    <version>v1-rev158-1.23.0</version>
    <exclusions>
        <!-- 排除旧版本Guava核心包 -->
        <exclusion>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
        </exclusion>
        <!-- 若存在jdk5兼容版本也一并排除 -->
        <exclusion>
            <groupId>com.google.guava</groupId>
            <artifactId>guava-jdk5</artifactId>
        </exclusion>
    </exclusions>
</dependency>

2. 显式声明兼容的Guava版本

添加明确的Guava依赖,版本需与google-cloud-monitoring:1.98.0兼容(推荐使用29.0-jre,该版本与该Monitoring客户端版本匹配):

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>29.0-jre</version>
</dependency>

3. 验证依赖有效性

运行Maven命令检查依赖树,确认只有你声明的新版本Guava被引入:

mvn dependency:tree | grep guava

确保输出中没有旧版本的Guava条目。

验证修复

重新构建并运行应用,调用MetricServiceClient.create()时应该不会再出现该错误。

内容的提问来源于stack exchange,提问作者Amita Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 07:42:49