java.lang.NoSuchMethodError构建路径上的方法

时间:2011-10-03 00:57:05

标签: android

我有一个在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以某种方式/某处使用它来暗示冲突或“多重定义”的其他来源吗?

谢谢!

2 个答案:

答案 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。