Feb 20, 2024
GsonConverterFactory dependency en Retrofit 2: resolver Cannot resolve symbol
Si estás integrando Retrofit en una app Android y el IDE marca Cannot resolve symbol en GsonConverterFactory, el fallo suele venir de una dependencia faltante o de un cambio de artefacto entre versiones. En este artículo explicamos por qué ocurre y cómo solucionarlo con la GsonConverterFactory dependency correcta.
Breve contexto: qué es Retrofit
Retrofit (Square/Now OkHttp) es una librería tipo REST client para Java y Kotlin: defines una interfaz con anotaciones (@GET, @POST, @Path, etc.) y Retrofit genera la implementación que hace las peticiones HTTP. Se apoya en OkHttp para el transporte y, opcionalmente, en converters para serializar/deserializar el cuerpo de las peticiones (por ejemplo JSON ↔ objetos con Gson).
En Retrofit 1.x, Gson venía integrado de forma implícita. A partir de Retrofit 2, los converters se externalizaron: el core solo define la interfaz (Converter.Factory); la conversión JSON con Gson se hace con un artefacto aparte, converter-gson. Si no lo añades, la clase GsonConverterFactory no existe en el classpath y aparece el error Cannot resolve symbol.
El error: Cannot resolve symbol ‘GsonConverterFactory’
Suele aparecer en código como este:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create()) // Cannot resolve symbol
.build();
O en Kotlin:
val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create()) // Cannot resolve symbol
.build()
Causa: En Retrofit 2, GsonConverterFactory no forma parte del artefacto retrofit; está en el artefacto retrofit2:converter-gson. Sin esa dependencia, el compilador no encuentra la clase.
Solución: añadir la dependencia converter-gson
Hay que declarar en build.gradle (módulo app) dos dependencias: el cliente Retrofit y el converter Gson. Usa la misma versión en ambos para evitar incompatibilidades.
Gradle (Groovy) — build.gradle o build.gradle.kts equivalente
dependencies {
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
}
En versiones recientes de Android Gradle Plugin se usa implementation (no compile, obsoleto). Si tu proyecto aún usa compile, el comportamiento es el mismo para este caso; migrar a implementation es recomendable.
Versiones alineadas
Es importante que retrofit y converter-gson compartan versión. Por ejemplo:
2.9.0para ambos, o2.11.0(o la estable más reciente que uses).
Si usas una variable para no repetir:
def retrofitVersion = "2.9.0"
implementation "com.squareup.retrofit2:retrofit:$retrofitVersion"
implementation "com.squareup.retrofit2:converter-gson:$retrofitVersion"
Import en código
Con la dependencia añadida y un Sync Project with Gradle Files, el import debe resolverse:
import retrofit2.converter.gson.GsonConverterFactory;
En Kotlin:
import retrofit2.converter.gson.GsonConverterFactory
Detalle importante: grupo retrofit vs retrofit2
En versiones beta de Retrofit 2 el grupo era com.squareup.retrofit y el artefacto com.squareup.retrofit:converter-gson. En la versión estable pasó a com.squareup.retrofit2:
- Incorrecto (antiguo o typo):
com.squareup.retrofit:converter-gson:2.0.0-beta4 - Correcto:
com.squareup.retrofit2:converter-gson:2.0.0-beta4(o 2.x.x estable).
Un error típico es dejar retrofit en el converter y retrofit2 en el core; en ese caso el símbolo sigue sin resolverse. Verifica que ambos artefactos sean retrofit2.
Ejemplo mínimo completo
build.gradle (app):
dependencies {
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
}
Servicio y uso:
public interface ApiService {
@GET("users/{id}")
Call<User> getUser(@Path("id") long id);
}
// Construcción del cliente
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.ejemplo.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
ApiService api = retrofit.create(ApiService.class);
No es necesario añadir Gson como dependencia aparte para usar GsonConverterFactory: converter-gson ya trae la dependencia transitiva de Gson. Si quieres una versión concreta de Gson, puedes declararla explícitamente.
Resumen
| Problema | Causa | Solución |
|---|---|---|
Cannot resolve symbol 'GsonConverterFactory' | Falta el artefacto que define la clase | Añadir com.squareup.retrofit2:converter-gson con la misma versión que retrofit2:retrofit. |
| Sigue sin resolver | Typo en el grupo (retrofit en vez de retrofit2) | Usar com.squareup.retrofit2:converter-gson. |
| Incompatibilidades en runtime | Versiones distintas de retrofit y converter-gson | Alinear versiones (p. ej. 2.9.0 para ambos). |
La GsonConverterFactory dependency correcta en proyectos actuales es com.squareup.retrofit2:converter-gson con versión alineada a tu Retrofit. Tras añadirla y sincronizar Gradle, el error Cannot resolve symbol debería desaparecer.
Para más casos y discusión en comunidad, puedes revisar el hilo en Stack Overflow: Retrofit 2 example tutorial but GsonConverterFactory display error “Cannot resolve symbol”.
Related Blogs
See All Blog
Los repositorios de IA más importantes en GitHub en 2026
Los repositorios de IA más importantes en GitHub en 2026 El ecosistema open-source de inteligencia artificial está creciendo a un ritmo imp
Cómo montar un sistema RAG con LlamaParse, Voyage AI y Claude: del PDF a la respuesta inteligente
Los modelos de lenguaje como Claude o GPT son extraordinariamente capaces, pero tienen un límite fundamental: no saben lo que no estaba en s
RabbitMQ vs Kafka vs Pulsar: tres formas muy distintas de mover datos
RabbitMQ, Apache Kafka y Apache Pulsar mueven mensajes. Pero bajo esa aparente similitud, resuelven problemas muy diferentes en sistemas dis
Del concepto al impacto de negocio
No solo construimos tecnología. Construimos productos digitales que funcionan, se posicionan, se adoptan y crecen. Relación continua con visión de crecimiento.