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.

Actualización del controlador de Mongo Java de la versión 3.12.1 a 4.2.3 produce excepciones de método/clase no encontrados al implementar.

Tengo una aplicación Java basada en el servidor de Mongo 4.2 y las versiones de los componentes son las siguientes:

spring-boot 2.2.5.RELEASE
spring-data-mongodb2.2.5.RELEASE
mongo-java-driver3.12.1

Actualicé Spring Boot a la versión 2.5.8 y realicé algunos cambios para actualizar las dependencias de la siguiente manera:

spring-boot 2.5.8
spring-starter-parent 2.5.8
spring-data-mongodb 3.2.3
mongodb-driver-core 4.2.3


org.springframework.data
spring-data-mongodb
3.2.3


org.mongodb
mongodb-driver-core
4.2.3


org.mongodb
mongodb-driver-sync
4.2.3


org.springframework.boot
spring-boot-starter-parent
2.5.8

Como utilicé la nueva importación:

import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;

es decir, la API moderna utilizando el controlador mongo-java 3.12.1, lo actualicé a mongodb-driver-sync 4.2.3.

Resolví todos los errores de compilación, pero al implementar, obtuve errores como “método no encontrado para getSrvHost()”; al depurar más a fondo, descubrí que la dependencia anterior de “mongo-java-driver 3.3.0” ya estaba presente en el proyecto.

Excluí esa dependencia y se resolvió el problema anterior, ahora no hay dependencias antiguas, pero sigo obteniendo el siguiente error sin utilizar un enfoque de API heredada:

java.lang.NoClassDefFoundError: com/mongodb/MongoClient
Causado por: java.lang.NoClassDefFoundError: com/mongodb/MongoClient

En este punto, estoy completamente atascado en el proceso de actualización del controlador y Spring, ya que al no usar com.mongodb.MongoClient en todo el proyecto, sigue arrojando errores al implementarlo.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que la clase “com.mongodb.MongoClient” todavía se está utilizando en algún lugar del proyecto a pesar de no haber sido importada explícitamente. Una forma de identificar dónde se está utilizando es buscar en el proyecto cualquier aparición de “MongoClient” y ver si está relacionado con la API heredada o no.

    Otro posible problema podría ser que algunas dependencias todavía tengan dependencias transitivas en la versión antigua de mongo-java-driver. En ese caso, podría ser necesario excluir esas dependencias transitivas y agregar explícitamente la versión más reciente del controlador.

    También es conveniente comprobar si existen conflictos entre las diferentes versiones de mongo-java-driver que se están utilizando en el proyecto. Podría ser necesario reconciliar esos conflictos especificando explícitamente qué versión usar o actualizando/reduciendo ciertas dependencias.

    En general, la actualización de las dependencias de un proyecto puede ser un proceso complejo y requiere un análisis y pruebas cuidadosos para garantizar la compatibilidad y estabilidad. Podría ser útil consultar la documentación oficial y los foros de las bibliotecas específicas que se están utilizando, así como solicitar ayuda a la comunidad.

Comments are closed.