解决 ProGuard 中的“库类的重复定义”
Posted
技术标签:
【中文标题】解决 ProGuard 中的“库类的重复定义”【英文标题】:Resolving a "duplicate definition of library class" in ProGuard 【发布时间】:2012-01-14 22:09:04 【问题描述】:我有一个包含 Xerces 库的 Java 项目。
当我使用 Proguard 处理项目时,我收到警告:
Note: duplicate definition of library class [org.w3c.dom.html.HTMLDOMImplementation]
我在 Xerces 中看到这个类存在,并且在 JDK 1.6 的 rt.jar 中存在同一个类。
ProGuard 创建的 jar 文件无法启动(错误:“发生 Java 异常”)。 我怎么解决这个问题?谢谢!
(注意:我使用 Netbeans)
【问题讨论】:
【参考方案1】:1) 您应该从其中一个库中删除该类(不建议这样做,因为它可能会破坏其他类)
2) 找一个没有这个类的罐子。例如您在应用程序中使用的类可能在许多 jar 中可用。因此,请获取不存在此冲突类但存在您想要的其他类的 jar(这可能需要一些时间)
3)(最好)忽略错误。我不认为它应该给任何问题。根据类路径中首先出现的 jar,将选择该类。
【讨论】:
不要不要忽略这些错误。它们可能在运行时导致 ClassCastExceptions。最好的方法是#1 - 从库中删除该类,因为它是重复的。以上是关于解决 ProGuard 中的“库类的重复定义”的主要内容,如果未能解决你的问题,请参考以下文章
Android 中的 ProGuard 不起作用。(不混淆)