我在eclipse的android应用程序中使用OkHttp 2.0.0 jar。由于OkHttp现在依赖于Okio库,我还在我的项目中添加了Okio 1.0.0 jar。项目编译良好,没有编译错误但是当我在我的Android设备上运行时,它给了我NoClassDefFoundError
所有与OkHttp库类。
我已将所有jar放在项目的libs文件夹中,并将它们添加到我的构建路径中,并尝试在“导出和顺序”选项卡中检查它们,但它仍无法正常工作。
我想知道,因为okhttp依赖于okio,只是添加两个罐子都可以正常工作或者我必须做任何不同的事情。
我也尝试过排球罐,它没有任何问题都可以正常工作。任何人都可以帮助我,这个问题现在已经存在了3到4天。
更新 我也尝试了android studio并在构建依赖中添加了okhttp库,但仍无效。
答案 0 :(得分:6)
OkHttp v2.0依赖于Okio v1.0。你可以下载它的jar here。这对我有用
答案 1 :(得分:1)
在OkHttp 2.0.0中,语言级别已更新为Java 7。
请参阅此处更改日志https://github.com/square/okhttp/blob/master/CHANGELOG.md
为了解决问题,您需要更新到java 7。
此时你可能还需要将目标sdk更改为kitkat(API 19),并更新你的构建工具等,以便android与java 7一起玩得很好
编辑:当我升级到okHttp 2.0.0并使用ant构建时,我遇到了同样的问题。虽然构建似乎成功,但我得到了NoClassDefFoundError。通过我的构建日志我有一大堆无声错误
第一个来自javac
warning: com/squareup/okhttp/<classname>.class major version 51 is newer than 50, the highest major version supported by this compiler.
和第二个来自dex
[dx] trouble processing:
[dx] bad class file magic (cafebabe) or version (0033.0000)
[dx] ...while parsing com/squareup/okhttp/<classname>.class
[dx] ...while processing com/squareup/okhttp/<classname>.class
答案 2 :(得分:0)
转到Project/Properties/Java Build Path/Order and Export
- 如果您使用,请确保在Android依赖项和支持库前面进行检查。选中所有复选框,然后单击“应用”并清除项目。