es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error al usar la API de Google Sheets con Spring Boot.

Estoy intentando extraer la información de mi hoja de cálculo de Google desde mi aplicación Spring Boot, pero obtengo el siguiente error:

Excepción en el hilo “main” java.lang.NoSuchMethodError: ‘long
com.google.common.io.ByteStreams.exhaust(java.io.InputStream)’

Ya he agregado todas las dependencias necesarias que creo que necesito y aún así obtengo el error cuando ejecuto mi programa.

Algunas de las dependencias que estoy utilizando son las siguientes:

google-oauth-client
google-oauth-client-java
google-oauth-client-jetty
google-api-client
google-http-client
google-http-client-jackson2
google-api-services-sheets-v4

Mi mayor duda es que cuando uso el mismo código en un proyecto Maven, se ejecuta correctamente. Pero cuando intento integrar el mismo código en un proyecto Spring Boot, obtengo el error anterior. Entonces, ¿por qué?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El error que estás enfrentando se debe a una incompatibilidad de versiones entre la biblioteca Google Guava utilizada por Google OAuth y Google API clients, y la versión de Guava utilizada por tu aplicación Spring Boot. Parece que tu aplicación Spring Boot depende de una versión más antigua de Guava que la requerida por las bibliotecas de Google.

    Una posible solución es agregar la siguiente dependencia explícitamente en el archivo pom.xml o build.gradle de tu aplicación Spring Boot:

    <dependency>
      <groupid>com.google.guava</groupid>
      <artifactid>guava</artifactid>
      <version>30.1-jre</version>
    </dependency>
    

    O, en build.gradle:

    dependencies {
        implementation ('com.google.guava:guava:30.1-jre')
    }
    

    Esto asegurará que tu aplicación Spring Boot utilice la misma versión de Guava que se requiere en las bibliotecas de Google.

    Otra solución podría ser excluir Google Guava de las dependencias de Google OAuth y Google API clients. Por ejemplo, en tu archivo pom.xml:

    <dependency>
      <groupid>com.google.apis</groupid>
      <artifactid>google-api-services-sheets</artifactid>
      <version>v4-rev581-1.25.0</version>
      <exclusions>
        <exclusion>
          <groupid>com.google.guava</groupid>
          <artifactid>guava</artifactid>
        </exclusion>
      </exclusions>
    </dependency>
    

    Esto excluirá Google Guava del árbol de dependencias del artefacto google-api-services-sheets, lo cual resolverá el conflicto de versiones.

    También es importante tener en cuenta que Google OAuth y Google API clients a menudo dependen de un gran número de dependencias transitivas, por lo que es posible que alguna otra biblioteca esté causando un conflicto de versiones. En ese caso, puede que necesites investigar más a fondo y excluir la biblioteca conflictiva.

    En cualquier caso, es una buena práctica utilizar una herramienta de gestión de dependencias como Maven o Gradle para asegurarte de que todas las dependencias de tu proyecto se resuelvan correctamente y evitar conflictos de versiones.

Comments are closed.