java - librerias - Esta dependencia me da dos versiones de un jar. ¿Cómo puedo solucionar esto?
exportar programa java (2)
Estoy usando Gradle para mi proyecto. Una de las dependencias que he especificado en mi build.gradle es
compile ''org.glassfish.jersey.media:jersey-media-moxy:2.0''
Esto funciona bien en una aplicación Java normal, sin embargo, cuando intento compilarlo en Android obtengo:
Al ver a qué bibliotecas se hace referencia, está claro que hay tanto javax.inject-2.3.0-b05.jar
como javax.inject-1.jar
, que encontré agregados por la dependencia anterior. Supongo que este jar ''duplicado'' es el que causa el error de compilación.
¿Cómo voy alrededor de esto? ¿Por qué la dependencia incluye dos del mismo jar? ¿Hay alguna forma de hacer que la versión de Android se construya con estos dos jarrones o quitar uno de estos frascos?
Normalmente, gradle solo incluirá 1 jar por dependencia. Si se encuentran versiones diferentes para las mismas dependencias, se usará la versión más nueva.
Sin embargo, en su caso, estos 2 jar son dependencias con diferentes nombres de grupo:
''javax.inject:javax.inject:1''
''org.glassfish.hk2.external:javax.inject:2.3.0-b05''
Es por eso que gradle incluyó ambos ya que se tratan como dependencias diferentes.
''javax.inject: javax.inject: 1'' es muy antiguo, creo que deberías excluirlo como lo dijo Niels Bech Nielsen.
Para averiguar de dónde viene esta dependencia, puede usar el comando:
gradle -q dependencyInsight --dependency inject
Parece que tienes un árbol de dependencia similar
project
|--- org.glassfish.jersey.media:jersey-media-moxy:2.0
| /--- *:javax.inject:1
/--- *:javax.inject:2.3.0-b05
Donde * es el grupo, que sospecho que puede ser diferente de esos dos.
Intente hacerse una idea de cómo se están aprovechando sus dependencias mediante la tarea de dependencia
gradle dependency
Si necesita excluir una dependencia, ingrésela en la etiqueta, similar al ejemplo siguiente
compile(''org.hibernate:hibernate:3.1'') {
//excluding a particular transitive dependency:
exclude module: ''cglib'' //by artifact name
exclude group: ''org.jmock'' //by group
exclude group: ''org.unwanted'', module: ''iAmBuggy'' //by both name and group
}