在类org.w3c.dom.Node中找不到引用的方法'java.lang.String lookupNamespaceURI(java.lang.String)'

时间:2013-04-17 16:54:27

标签: proguard

我成功地使用proguard 4.5.1和proguard-maven-plugin(没有指定版本)来混淆我在JDK 6平台上的webapp。

当我升级到JDK 7平台时,我不得不使用proguard-maven-plugin升级到proguard 4.8 2.1.0-SNAPSHOT我在执行proguard时遇到以下警告的两个实例导致构建失败:

 [proguard] Warning: mypackage.MyClass: can't find referenced method 'java.lang.String lookupNamespaceURI(java.lang.String)' in class org.w3c.dom.Node

我已经检查了确定... / jdk1.7.0 / jre / lib / rt.jar被指定为库:

[proguard] Reading library jar [.../jdk1.7.0/jre/lib/rt.jar]

我收到的警告可能与我的问题有关:

[proguard] Note: duplicate definition of library class [org.w3c.dom.Node]

发布了一个类似的问题here,但它无法解决我的问题。

有关如何找出哪个库具有重复定义以及如何解决此问题的任何提示?

1 个答案:

答案 0 :(得分:0)

当我从项目中删除以下未使用的依赖项时,我的问题得到了解决:

 +- org.swinglabs:swingx-ws:jar:1.0:compile
|  |  +- xerces:xercesImpl:jar:2.8.1:compile
|  |  |  \- xml-apis:xml-apis:jar:1.3.03:compile

我调试问题根源的方式如下。

  1. 我找了第一个警告“库类[org.w3c.dom.Node]的重复定义”,这是原始警告消息中提到的类。
  2. 接下来,我向后搜索“阅读库jar”,看看哪个jar有重复的定义。它是xml-apis-1.3.03.jar
  3. 然后我运行了maven的依赖性:项目中的树目标,以查看哪个jar在xml-apis-1.3.03.jar依赖项中拉入。这是swingx-ws jar。
  4. 最近在该项目中添加了swingx-ws jar,幸好从未实际使用过。所以我所要做的就是删除它。如果我真的不得不使用那个jar,我怀疑我可以排除xml-apis的依赖关系并且仍能使它工作。