4

场景:一个android项目说,ProjAndroid指的是一个java项目说(HelperProj)。

在 HelperProj 中,我尝试通过实例化其管理器来使用 httpConnection Pooling。

PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();

我遇到了Apache 示例,并且能够作为独立程序实现而没有任何故障。

但是对于 android,首先它给出了错误,NoClassDefFoundError当我将httpclient-4.3.1.jarhttpcore-4.3.jar甚至添加到 android 项目时,它得到了解决。但是现在我得到了另一个错误

Caused by: java.lang.NoSuchFieldError: org.apache.http.message.BasicLineFormatter.INSTANCE

我的结论:- 上面的字段应该在 httpcore-4.3.jar 中可用,因为当我作为独立运行我的代码时没有收到任何错误。所以,我搜索并发现 android 已经提供了BasicLineFormatter 类,但该字段不可用并且可能在运行时这个类被引用。

如果以上错误,请纠正我。

帮助:- 所以有人请指导我如何解决这个资源冲突并使用 jar 中可用的类而不是 android api 可用的类。

4

1 回答 1

5

So someone please guide me as how may I resolve this resource conflict and use the class available in jar instead of the one available with android api.

This is not directly possible. You do not have control over the classpath, and firmware-loaded classes always take precedence as a result.

You are welcome to try to use utilities like jarjar to move the third-party code into a separate package.

Or, you can see if somebody else has already done this for you, as with htpclientandroid.

Or, you are welcome to come up with a different solution to your problem that does not involve replacing Android-supplied classes.

于 2013-11-07T12:37:18.267 回答