在模块中找到重复的类

时间:2019-11-20 03:30:32

标签: gradle duplicates dependencies

在模块jsp-api-2.1-6.1.14.jar(org.mortbay.jetty:jsp-api-2.1:6.1.14)和jsp-api-2.1.jar(中找到的重复类javax.el.ArrayELResolver javax.servlet.jsp:jsp-api:2.1) 在模块jsp-api-2.1-6.1.14.jar(org.mortbay.jetty:jsp-api-2.1:6.1.14)和jsp-api-2.1.jar(javax.servlet)中找到重复的类javax.el.BeanELResolver .jsp:jsp-api:2.1) 在模块jsp-api-2.1-6.1.14.jar(org.mortbay.jetty:jsp-api-2.1:6.1.14)和jsp-api-2.1.jar(javax)中找到重复的类javax.el.BeanELResolver $ BeanProperties .servlet.jsp:jsp-api:2.1) 在模块jsp-api-2.1-6.1.14.jar(org.mortbay.jetty:jsp-api-2.1:6.1.14)和jsp-api-2.1.jar(javax)中找到重复的类javax.el.BeanELResolver $ BeanProperty .servlet.jsp:jsp-api:2.1)

 build.gradle:
    implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'androidx.appcompat:appcompat:1.1.0'
        implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'androidx.test.ext:junit:1.1.1'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
        //The dependencies below are for a library i'm including after which i get the error
        compile "org.bouncycastle:bcprov-jdk15on:1.54"
        compile "org.apache.pdfbox:pdfbox:[2.0.15,)"
        compile "org.mapdb:mapdb:3.0.4"
        compile "com.google.guava:guava:19.0"
        compile "com.carrotsearch:java-sizeof:0.0.5"
        compile "org.apache.hadoop:hadoop-common:2.7.1"
        compile "com.amazonaws:aws-java-sdk:1.11.19"
        compile "org.apache.hadoop:hadoop-core:1.2.1"
        compile "org.apache.lucene:lucene-analyzers-common:6.1.0"
        compile "org.apache.poi:poi-scratchpad:3.15-beta1"
        compile "org.apache.poi:poi:3.15-beta1"
        compile "org.apache.poi:poi-ooxml:3.15-beta1"

我已经阅读了关于堆栈溢出的其他线程,有关在build.gradle中使用exclude:group只是我似乎做错了什么。有人可以告诉我(i)如何添加排除语句来解决上述错误,而不是给出一些通用示例(ii)我将如何手动删除导致重复的模块? (我尝试过从gradle缓存文件夹中删除它们,甚至删除了.gradle文件夹,但它一直在重建它)。任何建议将不胜感激

1 个答案:

答案 0 :(得分:0)

首先,不赞成将编译替换为实现。 (i)此链接提供了很好的解释:https://discuss.gradle.org/t/how-to-exclude-transitive-dependency/2119/2 (ii)我进行了很多搜索,以找到可行的方法来进行此操作,并且大多数建议的方法都失败了。实际起作用的是以下示例: 注意:程序类的重复定义     问题:hadoop-common和hadoop-core共享许多导致冲突的通用类     解:     我设法通过手动删除jar文件中的重复.class文件来解决此问题。 (即     (i)将扩展名从jar更改为zip     (ii)提取     (iii)删除.class文件或整个文件夹(如果其中包含所有重复文件)     (iv)将扩展名从zip更改回jar     请注意,不要使用Winrar解压缩jar文件,并尝试将其压缩回去,因为某些奇怪的原因不起作用。我不得不     导航到Gradle缓存:C->用户->用户名-> .gradle->缓存-> modules-2-> files-2-> org.apache.hadoop->     找到hadoop-common或hadoop-core,然后应用以上内容删除具有重复类的文件夹