首先,我在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)
答案 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 {
.
.
}