5

我在 Eclipse 上的 android 应用程序中使用 OkHttp 2.0.0 jar。由于 OkHttp 现在依赖于 Okio 库,我还在我的项目中添加了 Okio 1.0.0 jar。该项目编译良好,没有编译错误,但是当我在我的 android 设备上运行时,它给了我NoClassDefFoundError与 OkHttp 库类相关的所有内容。

我已将所有 jar 放在项目的 libs 文件夹中,并将它们添加到我的构建路径中,并尝试在“导出和订购”选项卡中检查它们,但它仍然无法正常工作。

我想知道,因为 okhttp 依赖于 okio,只添加两个 jar 就可以正常工作,或者我必须做任何不同的事情。

我也尝试过 volley jar,它工作正常,没有任何问题。任何人都可以在这里帮助我,这个问题现在存在 3 到 4 天。

更新 我还尝试了 android studio 并在构建依赖项中添加了 okhttp 库,但仍然无法正常工作。

4

3 回答 3

7

OkHttp v2.0 依赖于 Okio v1.0。你可以在这里下载它的 jar 。这对我有用

参考来自 https://github.com/square/okhttp/issues/870

于 2014-08-27T12:59:00.353 回答
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
于 2014-07-07T12:42:04.037 回答
0

转到Project/Properties/Java Build Path/Order and Export-- 如果您使用它,请确保在 Android 依赖项和支持库前面有一个检查。标记所有复选框并单击应用并清理项目。

于 2014-07-07T12:47:15.387 回答