gpt4 book ai didi

android - Android 中 Jersey 2.4.1 客户端的 NoClassDefFoundError

转载 作者:太空狗 更新时间:2023-10-29 15:07:33 25 4
gpt4 key购买 nike

我有一个针对 API 17 的 Android 项目,它需要使用 Jersey 2.4.1 REST 服务。但是,在运行时,我不断收到 org.glassfish.jersey.model.internal.CommonConfig$1 的 NoClassDefFoundError。此类在客户端代码所需的 Jersey JAR 文件中。

我已经按照其他帖子中关于 libs Android 依赖项修复的说明进行操作,例如Android java.lang.NoClassDefFoundError但我仍然有问题。 JAR 在 libs 目录中,我已经检查了构建路径中的导出选项。奇怪的是我在这个库中还有其他正在运行的 Jersey jar ,它似乎找不到这个。

我已经尝试清理项目、刷新它、删除并重新添加 JAR,但我似乎无法让它工作。它提示的类在 jersey-common-2.4.1.jar 中,我可以在 Eclipse 工作区中看到它,所以正确的 JAR 就在那里,只是它似乎没有与 APK 一起导出。

更新

我尝试配置 ProGuard 以查看生成的内容,但它是一个永无止境的关于类和方法的警告的兔子洞。最后,我只是将 -ignorewarnings 放入以获得一些输出。

更新 2

我仔细查看了错误消息,它实际上缺少 org.glassfish.jersey.model.internal.CommonConfig$1(注意 $1)。这是一个静态内部类,这让我几乎可以肯定这是 ProGuard 配置问题。我尝试添加:

-keepclasseswithmembers class org.glassfish.jersey.**
-keepclasseswithmembers class javax.ws.rs.**

到我的 proguard-project.txt 文件,但我仍然得到 NoClassDefFoundError。我如何告诉 Eclipse/ProGuard 对于两种构建选项(右键单击部署和导出)完全保留我的库 jar?

答案/解决方案

查看我对@pjco 的评论。

最佳答案

Proguard 默认不运行。 $1 方法是在内部类试图访问外部实例中的某些内容时由编译器生成的。带有美元符号和数字的方法与 Proguard 无关。 Proguard 用字母(a、b、c 等)命名方法。

libs 文件夹应该默认导出。您不需要在最新版本的 ADT (23) 上配置构建路径。

请务必更新 ADT/构建工具。尝试使用 eclipse 中的向导启动一个新项目,并将 jar 放在您的 libs 文件夹中。然后从 MainActivity 调用 jar 中的一些函数。

不要更改Java 构建路径 或任何其他类似设置上的任何内容

关于android - Android 中 Jersey 2.4.1 客户端的 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20450038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com