我有一个针对 API 17 的 Android 项目,它需要使用 Jersey 2.4.1 REST 服务。但是,在运行时,我不断收到 NoClassDefFoundError 的org.glassfish.jersey.model.internal.CommonConfig$1
. 这个类在我需要的客户端代码的 Jersey JAR 文件中。
我已按照其他帖子中有关 libs Android 依赖项修复的说明进行操作,例如Android java.lang.NoClassDefFoundError但我仍然遇到问题。JAR 在 libs 目录中,我已经检查了构建路径中的导出选项。奇怪的是我在这个库中有其他球衣罐正在工作,它似乎没有找到这个。
我已经尝试清理项目,刷新它,删除并重新添加 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 的回复。