类“ org.apache.http.message.BufferedHeader”未实现接口“ org.apache.http.NameValuePair”

时间:2019-09-30 15:07:44

标签: java android apache

首先,我在stackoverflow中使用了所有解决方案,但是在发布apk中却遇到此错误。谁能告诉我如何解决这个问题?我在从Google获取时间时遇到了这个问题。

dateStr = response.getFirstHeader("Date").getValue();

我还在清单上添加了Volly Lib。该方法可在我的其他应用程序中使用,但我不知道为什么它会在特定应用程序中发生。

<uses-library
            android:name="org.apache.http.legacy"
            android:required="false" />

例外:

Caused by: java.lang.IncompatibleClassChangeError: Class 'org.apache.http.message.BufferedHeader' does not implement interface 'org.apache.http.NameValuePair' in call to 'java.lang.String org.apache.http.NameValuePair.getValue()' (declaration of 'package.MainActivity$GoogleTime' appears in /data/app/packagename-666QBWSxEt_A-vBNzTMWfA==/base.apk)

2 个答案:

答案 0 :(得分:2)

观察到org.apache.http.message.BufferedHeader是接口org.apache.http.NameValuePair的合法实现,因此您在类路径上有重复的类-特别注意NameValuePair的两次不同出现。

错误消息忽略了类加载器或主jar文件:认为它是:

'org.apache.http.message.BufferedHeader'类未从jar X实现接口'org.apache.http.NameValuePair',而从jar Y实现了具有相同名称的接口

确定您在描述为“更改一些内部事物并更新我的应用程序”期间所做的工作,这可能会指向您。如果您没有引入其他依赖关系,则类加载顺序可能已更改。

如果这没有帮助:遍历运行时类路径,并识别引入相同类文件的jar。消除重复。

答案 1 :(得分:0)

您是否曾经尝试过将其添加到成绩文件中

useLibrary 'org.apache.http.legacy'

像这样

android {
.
.
useLibrary 'org.apache.http.legacy'
}

dependicies {
.
.
}