java.lang.LinkageError: Package versions: jackson-core=2.13.3, jackson-databind=2.13.3,jackson-dataformat-xml=2.13.3, jackson-datatype-jsr310=2.13.3

Viewed 76

I was trying to implement keyvault from azure in my app and after implementing azure-identity:1.5.4 lib for DefaultAzureCredentialBuilder() it throws Linkage Error which is given below, I have also forced the perticular version and excluded some of them, but still same issue continues, any please suggest me how to detect previous version or clashing version so that to remove.Also my compile sdk version is 32. Updated Gradle dependencies below. I have used

resolutlionStrategy { failOnVersionConflict()}

but it shows no conflict now.

java.lang.LinkageError: Package versions: jackson-core=2.13.3, jackson-databind=2.13.3, jackson-dataformat-xml=2.13.3, jackson-datatype-jsr310=2.13.3, azure-core=1.31.0, Troubleshooting version conflicts: 
    at com.azure.core.implementation.jackson.ObjectMapperShim.createXmlMapper(ObjectMapperShim.java:82)
    at com.azure.core.util.serializer.JacksonAdapter.<init>(JacksonAdapter.java:82)
    at com.azure.core.util.serializer.JacksonAdapter.<init>(JacksonAdapter.java:59)
    at com.azure.core.util.serializer.JacksonAdapter$SerializerAdapterHolder.<clinit>(JacksonAdapter.java:114)
    at com.azure.core.util.serializer.JacksonAdapter$SerializerAdapterHolder.access$000(JacksonAdapter.java:110)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
 Caused by: java.lang.NoSuchMethodError: No static method newFactory(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/stream/XMLInputFactory; in class Ljavax/xml/stream/XMLInputFactory; or its super classes (declaration of 'javax.xml.stream.XMLInputFactory' appears in /data/app/~~sFZqRHFT2xtp6Ogx--
    at com.fasterxml.jackson.dataformat.xml.XmlFactory.<init>(XmlFactory.java:115)
    at com.fasterxml.jackson.dataformat.xml.XmlFactory.<init>(XmlFactory.java:101)
    at com.fasterxml.jackson.dataformat.xml.XmlFactory.<init>(XmlFactory.java:85)
    at com.fasterxml.jackson.dataformat.xml.XmlMapper.<init>(XmlMapper.java:127)
    at com.fasterxml.jackson.dataformat.xml.XmlMapper.builder(XmlMapper.java:218)
    at com.azure.core.implementation.jackson.ObjectMapperFactory.createXmlMapper(ObjectMapperFactory.java:90)
  

Gradle Dependencies

     implementation("com.azure:azure-sdk-bom:1.2.5"){
    force(true)
}
implementation ('com.fasterxml.jackson.core:jackson-core'){
    version{
        strictly("2.13.4")
    }
    force(true)
}
implementation ('com.fasterxml.jackson.core:jackson-databind:2.13.4'){
    force(true)
    version{
        strictly("2.13.4")
    }
}
implementation ('com.fasterxml.jackson.dataformat:jackson-dataformat-xml'){
    version{
        strictly("2.13.4")
    }
    force(true)
}

implementation ('com.fasterxml.jackson.core:jackson-annotations:2.13.4'){
    version{
        strictly("2.13.4")
    }
    force(true)
}

implementation ('com.fasterxml.jackson.datatype:jackson-datatype-jsr310'){
    version{
        strictly("2.13.4")
    }
    force(true)
}
//azure keyvault lib
implementation ('com.azure:azure-core'){
    version{
        strictly("1.32.0")
    }
    force(true)
}
implementation ('com.azure:azure-security-keyvault-keys:4.4.6')
implementation 'com.azure:azure-security-keyvault-secrets:4.4.6'
implementation (group: 'com.microsoft.azure', name: 'azure-storage', version: '8.6.6')
implementation (group: 'com.azure', name: 'azure-storage-blob', version: '12.19.0')

implementation("com.azure:azure-core-http-netty:1.12.5"){
    force(true)
    force = true
}
implementation("com.microsoft.azure:msal4j:1.13.0"){
    force(true)
}
implementation("com.microsoft.azure:msal4j-persistence-extension:1.1.0"){
    force(true)
}
implementation group: 'javax.xml.stream', name: 'stax-api', version: '1.0-2'

implementation ('com.google.guava:guava:27.0.1-android'){
    force(true)
    force = true
}

implementation ('com.azure:azure-identity'){
   version{
       strictly("1.5.5")
   }
    exclude group: 'com.azure', module: 'azure-core'
    exclude group: 'com.fasterxml.jackson.core', module: 'jackson-core'
    exclude group: 'com.fasterxml.jackson.core', module: 'jackson-databind'
    exclude group: 'com.fasterxml.jackson.dataformat', module: 'jackson-dataformat-xml'
    exclude group: 'com.fasterxml.jackson.datatype', module: 'jackson-datatype-jsr353'
}
1 Answers

The error occurs if there are multiple versions of Jackson on the dependency list.

Azure SDK libraries aggressively update Jackson version across releases. If one has different versions of the libraries, it is bound to introduce conflicts. (though azure SDK is made to be compatible across Jackson 2.10+)

This is why Azure-SDK releases the bom. The artifacts are rigorously tested for compatibility across different azure libraries.

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-sdk-bom</artifactId>
            <version>1.2.5</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-identity</artifactId>
        </dependency>
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-security-keyvault-secrets</artifactId>
        </dependency>
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>com.azure:azure-security-keyvault-keys</artifactId>
        </dependency>
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-storage-blob</artifactId>
        </dependency>
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-communication-chat</artifactId>
        </dependency>

</dependencies>
Related