当前位置: 首页 > 知识库问答 >
问题:

使用Robospice和Android Studio的Commons-Io重复输入错误

楚承天
2023-03-14

我已经在下面的问题上工作了几个小时,但还没有想出一个解决我的问题的方法。我已经尝试了从堆栈溢出(Android Studio更新到1.0损坏了MultiDex和Gradle Plugin V0.13.1后的重复Zip条目)的以下修复,但都不起作用。

在尝试构建程序时,我得到以下错误:

Execution failed for task ':app:packageAllDebugClassesForMultiDex'.
> java.util.zip.ZipException: duplicate entry: org/apache/commons/io/CopyUtils.class

该错误似乎表明commons-io在构建过程中被包含了两次

我正在使用Android Studio和Gradle来包含多个Robospice依赖项。这是我的Gradle构建文件的依赖项部分:

dependencies {
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.android.support:support-v4:21.0.3'
    compile 'com.google.android.gms:play-services:6.5.87'

    compile'com.google.api-client:google-api-client-android:1.19.0'


    // You must install or update the Google Repository through the SDK manager to use this dependency.
    // The Google Repository (separate from the corresponding library) can be found in the Extras category.
    //compile 'com.google.android.gms:play-services:4.3.23'
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile "com.jakewharton:butterknife:${butterknifeVersion}"
    compile 'com.sun.jersey:jersey-bundle:1.8'
    compile 'com.google.code.gson:gson:2.3'
    compile 'org.codehaus.jackson:jackson-core-asl:1.9.0'
    compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.0'

    compile ('com.octo.android.robospice:robospice:1.4.14'){
        exclude module: 'commons-io'
        exclude group: 'commons-io'
    }

    compile ('com.octo.android.robospice:robospice-spring-android:1.4.14'){
        exclude group: 'org.apache.commons', module: 'commons-io'
    }

    compile 'com.squareup.okhttp:okhttp:2.1.0'

    compile ('com.octo.android.robospice:robospice-google-http-client:1.4.14'){
        exclude module: 'xpp3'
        exclude group: 'stax'
    }

    compile 'org.scribe:scribe:1.3.5'
    compile files("$buildDir/native-libs/native-libs.jar")

}
+--- com.octo.android.robospice:robospice:1.4.14
|    \--- com.octo.android.robospice:robospice-cache:1.4.14
|         +--- org.apache.commons:commons-lang3:3.3.2
|         \--- org.apache.commons:commons-io:1.3.2
|              \--- commons-io:commons-io:1.3.2

共有1个答案

赵元白
2023-03-14

这是Robospice中一个已知且已修复的问题,由Gradle2.1的一个潜在问题造成:https://github.com/stephanenicolas/Robospice/issues/365。该修复程序将在下一个版本中发布。

您可以通过从所有Robospice依赖项中排除org.apache.commons:commons-io来解决这个问题,并手动包含commons-io:commons-io:1.3.2。像这样:

// workaround (https://github.com/stephanenicolas/robospice/issues/365)
// remove when robospice updates to 1.4.15+
compile ('com.octo.android.robospice:robospice-retrofit:1.4.14') {
    exclude group: 'org.apache.commons', module: 'commons-io'
}
compile ('com.octo.android.robospice:robospice-ormlite:1.4.14') {
    exclude group: 'org.apache.commons', module: 'commons-io'
}
compile 'commons-io:commons-io:1.3.2'
 类似资料:
  • Commons项目中用来处理IO的一些工具类包,下面是一些示例代码: //直接将IO流转成字符串 InputStream in = new URL( "http://jakarta.apache.org" ).openStream(); try {   System.out.println( IOUtils.toString( in ) ); } finally {   IOUtils.close

  • 问题内容: Commons-IO有一种方法,可以从输入流中读取所有内容: 我的问题是使用后是否应手动关闭输入流? 我以为IOUtils可能会关闭它,因为它已读取所有内容,但是我在源代码中找不到它。 问题答案: Javadoc说: 只要有可能,此类中的方法就不会刷新或关闭流。这是为了避免对流的来源和进一步使用做出不可移植的假设。因此,调用方仍然负责在使用后关闭流。

  • 问题内容: 我正在使用PHP。 请问什么是将新记录插入具有唯一字段的数据库的正确方法。我正在批量插入很多记录,我只想插入新记录,并且我不想重复条目有任何错误。 有没有唯一方法可以首先进行SELECT并查看条目是否在INSERT之前已经存在-并且仅在SELECT不返回任何记录时才插入INSERT?我希望不是。 我想以某种方式告诉MySQL忽略这些插入而没有任何错误。 谢谢 问题答案: 如果在重复记录

  • 问题内容: 这是代码吗 安全与否?据我了解,当我们关闭BufferedWriter时,它将刷新其缓冲区到基础流,并且可能由于错误而失败。但是IOUtils.closeQuietly API表示任何异常都将被忽略。 是否有可能由于IOUtils.closeQuietly而导致数据丢失未引起注意? 问题答案: 对于以下代码的javadoc,代码应如下所示: 不用于一般用途,而不是直接在Closable

  • 我想将Jackson2与<code>SpringRoboSpice commons-io-1.3.2.jar commons-lang3-3.2.1.jar jackson-annotations-2.2.3.jar jackson-core-2.2.3.jar jackson-databind-2.2.3.jar robospice-1.4.11.jar robospice-cache-1.4.

  • 本文向大家介绍java IO流 之 输入流 InputString()的使用,包括了java IO流 之 输入流 InputString()的使用的使用技巧和注意事项,需要的朋友参考一下 本文主要给大家介绍java的InputStream 流的使用。 (1)FileInputstream: 子类,读取数据的通道   使用步骤:     1.获取目标文件:new File()     2.建立通道: