Java Spring引导冲突的gradle依赖:googleoauth客户端

Java Spring引导冲突的gradle依赖:googleoauth客户端,java,spring-boot,gradle,Java,Spring Boot,Gradle,我正在尝试在Spring boot应用程序中运行Google日历Java示例。Google Calendar示例在单独运行时按预期运行,但当它们一起运行时,它的一个依赖项与Spring boot依赖项冲突 在这种情况下,我启用了以下依赖项: 并在启动Spring boot时看到以下错误: org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exce

我正在尝试在Spring boot应用程序中运行Google日历Java示例。Google Calendar示例在单独运行时按预期运行,但当它们一起运行时,它的一个依赖项与Spring boot依赖项冲突

在这种情况下,我启用了以下依赖项:

并在启动Spring boot时看到以下错误:

org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is java.lang.NoSuchMethodError: javax.servlet.ServletContext.addServlet
我可以让SpringBoot运行,进行以下依赖性更改,并对所需的Google日历代码进行注释

import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;

当然,这意味着谷歌日历示例将不再运行

我想我需要的是一些强制针对依赖性的特定版本的方法,这样Spring boot可以找到它当前缺少的方法,同时允许Google日历示例导入它需要的内容,但是作为Spring boot的新手,我非常感谢任何帮助或建议


感谢您的时间:)

我的gradle中的
com.google.api客户端也有同样的问题(同样在spring boot应用程序中)。
这个问题似乎与谷歌提供的servlet版本有关。
我通过在build.gradle编译行中添加排除来修复它:


    compile (group: 'com.google.api-client', name: 'google-api-client-appengine', version: '1.23.0'){
    exclude group:'javax.servlet'
    }

我同意艾伯特·莫西亚莱克的观点。 在我的例子中,我使用的是maven,我必须插入以下内容:

<dependency>
    <groupId>com.google.oauth-client</groupId>
    <artifactId>google-oauth-client-jetty</artifactId>
    <version>${project.oauth.version}</version>
    <exclusions>
        <exclusion>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>servlet-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>

com.google.oauth-client
谷歌oauth客户端jetty
${project.oauth.version}
org.mortbay.jetty
servlet api

将以下行添加到文件build.gradle

compile'javax.servlet:javax.servlet-api:3.1.0'
我试着跑好了


希望对您有所帮助。

您可以使用固定的版本号自己声明依赖项,它将优先于其他可传递的依赖项(在Maven中,这是通过dependencyManagement完成的。不确定如何在graddle中完成)