我有一个在Eclipse Indigo中创建的基本Android项目。我的构建路径上有一个第三方库,当我在初始活动中从该库实例化一个类时,它被调用。
虽然应用程序构建得很好,但我遇到以下错误:
10-02 19:51:17.311: ERROR/AndroidRuntime(314): java.lang.NoSuchMethodError: org.apache.http.conn.scheme.Scheme.<init>
在logcat的早期,我确实观察到以下错误消息:
10-02 19:50:48.670: DEBUG/dalvikvm(295): DexOpt: not verifying 'Lorg/apache/http/conn/scheme/Scheme;': multiple definitions
此课程包含在第三方JAR中; Android以某种方式/某处使用它来暗示冲突或“多重定义”的其他来源吗?
谢谢!
答案 0 :(得分:0)
如何协调冲突 - 我是否已经破解第三方JAR并排除冲突的文件?
我的猜测是,这无济于事,不过你可以尝试一下。有人似乎试图在Scheme
上调用一个方法,该方法可能存在于该类的JAR自己的私有副本中,但不在Android SDK中。
如果有问题的第三方JAR是Apache HttpClient,只是不要将JAR放在构建路径中,因为HttpClient已经是Android的一部分,并且坚持使用SDK中的方法。如果第三方JAR 不是 Apache HttpClient,我怀疑一旦你删除了他们的重复org.apache.http
类,那么其他东西就会破坏,这取决于他们自己的私有版本的那些类。如果是这种情况,您应该直接与第三方开发人员联系,以便在他们的JAR的Android支持上使用它们。你可能能够使用像jarjar
这样的工具来解决这个问题,但我不会指望它。
答案 1 :(得分:0)
您可以尝试类似jarjar的内容,它可以打开jar并在构建时将包重命名为不同的路径。这可以避免像您所拥有的冲突。我只是不确定它是否适用于Android。