Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

259
Vistas
Cómo resuelvo el mensaje de error: "La herencia de una interfaz con miembros '@JvmDefault' solo se permite con la opción -Xjvm-default"

Soy nuevo en el desarrollo de Android y actualmente estoy creando mi primera aplicación real. Estoy tratando de implementar una arquitectura MVVM y por eso tengo un modelo de vista para cada fragmento y cada modelo de vista tiene una fábrica de modelos de vista. Al menos, así es como entendí que tiene que ser.

Uso el código repetitivo que todos parecen usar para la fábrica:

 class ExampleViewModelFactory(private val exampleDao: ExampleDao) : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>): T { if (modelClass.isAssignableFrom(exampleViewModel::class.java)) { @Suppress("UNCHECKED_CAST") return ExampleViewModel(exampleDao) as T } throw IllegalArgumentException("Unknown ViewModel class") } }

Ahora el problema es que el compilador me está dando el siguiente error:

e: C:\Users\ ...\ExampleViewModel.kt: (64, 7): la herencia de una interfaz con miembros '@JvmDefault' solo se permite con la opción -Xjvm-default

Y este error lo produce la clase viewModelFactory que he implementado en el viewModel. Realmente no puedo decir qué significa esto y no puedo encontrar nada útil o incluso relacionado con mi problema específico. Básicamente seguí algunos tutoriales básicos sobre cómo crear tu primera aplicación, pero sigo encontrándome con errores como este. En la mayoría de los casos, pude solucionar el problema por mí mismo, pero esta vez es diferente.

Sé que muchos de ustedes tienen mucha experiencia y conocimiento, así que espero que algunos de ustedes encuentren el tiempo para ayudarme y darme una pista de lo que puedo hacer para solucionar esto.

over 4 years ago · Santiago Trujillo
4 Respuestas
Responde la pregunta

0

Intente poner estas líneas dentro del bloque android{} en el archivo build.gradle del módulo

 kotlinOptions{ freeCompilerArgs += [ "-Xjvm-default=all", ] }

Si el código anterior no funciona, intente agregar estas líneas a continuación dentro del bloque de dependencias {}

 tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach{ kotlinOptions{ freeCompilerArgs +=["-Xjvm-default=all",] } }
over 4 years ago · Santiago Trujillo Denunciar

0

Versión de Kotlin (kts) de la respuesta de @ianhanniballake

 tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile::class).configureEach { kotlinOptions { freeCompilerArgs = freeCompilerArgs + "-Xjvm-default=all" } }
over 4 years ago · Santiago Trujillo Denunciar

0

Parece que depende directa o indirectamente (a través de alguna otra biblioteca) de Lifecycle 2.5.0-alpha01 .

Según este problema :

Debe agregar temporalmente lo siguiente a su build.gradle :

 tasks.withType(KotlinCompile).configureEach { kotlinOptions { freeCompilerArgs += [ "-Xjvm-default=all", ] } }

Tenga en cuenta que, en determinadas circunstancias, es posible que desee utilizar all-compatibility en lugar de la compatibilidad all ; obtenga más información al respecto en la publicación de blog de Jebrain .

A partir de kotlin 1.6.20, no necesitará tocar build.gradle para obtener más información, consulte KT-47000

over 4 years ago · Santiago Trujillo Denunciar

0

Usa la versión estable, en este caso la 2.4.1. Tengo el mismo problema y lo resolví haciendo este cambio.

https://developer.android.com/jetpack/androidx/releases/lifecycle

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda