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

Spring Boot与Google OAuth Client依赖冲突问题求助

解决Spring Boot与Google Calendar Java示例的依赖冲突问题

看起来你遇到的是Servlet API版本冲突导致的启动失败,核心原因是Google Calendar示例依赖的库引入了低版本的Servlet API,覆盖了Spring Boot内嵌容器所需的高版本API,才会出现NoSuchMethodError: javax.servlet.ServletContext.addServlet这个错误——这个方法是Servlet 3.0及以上版本才有的,低版本(比如2.5)没有这个方法。

下面是具体的解决步骤:

1. 排除Google依赖中的旧版Servlet API

Google的google-api-client-java6和google-api-client-jetty依赖会默认引入低版本的javax.servlet:servlet-api,我们需要在构建配置中主动排除这个依赖,让Spring Boot使用自己内嵌容器提供的高版本Servlet API。

Maven配置示例

在你的pom.xml中,给Google相关依赖添加排除规则:

<!-- Google Calendar Java6 依赖 -->
<dependency>
    <groupId>com.google.api-client</groupId>
    <artifactId>google-api-client-java6</artifactId>
    <version>替换成你使用的版本</version>
    <exclusions>
        <exclusion>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!-- Google Calendar Jetty 依赖 -->
<dependency>
    <groupId>com.google.api-client</groupId>
    <artifactId>google-api-client-jetty</artifactId>
    <version>替换成你使用的版本</version>
    <exclusions>
        <exclusion>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>

Gradle配置示例

如果使用Gradle,在build.gradle中添加排除:

implementation('com.google.api-client:google-api-client-java6:替换成你使用的版本') {
    exclude group: 'javax.servlet', module: 'servlet-api'
}

implementation('com.google.api-client:google-api-client-jetty:替换成你使用的版本') {
    exclude group: 'javax.servlet', module: 'servlet-api'
}

2. 确认Spring Boot的Servlet API依赖

Spring Boot的spring-boot-starter-web依赖已经通过内嵌Tomcat(或其他容器)传递引入了符合要求的Servlet API,不需要你额外手动添加。排除掉Google依赖中的旧版API后,项目会自动使用Spring Boot提供的高版本API。

3. 验证依赖树(可选但推荐)

为了确保没有残留的低版本Servlet API,可以执行依赖树命令检查:

  • Maven:mvn dependency:tree
  • Gradle:gradle dependencies
    搜索输出中的javax.servlet:servlet-api,确认没有低版本的条目存在。

4. 恢复Google Calendar的OAuth代码

完成上述配置后,你就可以取消对AuthorizationCodeInstalledApp和LocalServerReceiver相关代码的注释了——依赖冲突解决后,Spring Boot能正常启动,同时Google Calendar的示例代码也能正常导入并运行。

如果是Spring Boot 3.x版本(使用Jakarta EE而非javax),你可能需要使用适配Jakarta的Google客户端版本(比如google-api-client-java6的最新版本),不过从你的错误信息来看,应该是Spring Boot 2.x的场景,上面的方案完全适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:48:47