2013-04-17 66 views
0

我成功的將proguard 4.5.1與proguard-maven-plugin(無版本指定)在JDK 6平臺上模糊我的web應用程序。在類org.w3c.dom.Node中找不到引用方法'java.lang.String lookupNamespaceURI(java.lang.String)'

當我升級到JDK 7平臺,我不得不升級到ProGuard的4.8使用ProGuard,Maven的插件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但它沒有幫助我解決我的問題。

有關如何找出哪個庫具有重複定義以及如何解決此問題的任何提示?當我從我的項目中刪除以下未使用的依賴

回答

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的depenency:項目上的樹目標,以查看哪個jar被拉到了xml-apis-1.3.03.jar依賴項中。這是swingx-ws jar。

最近在項目中添加了swingx-ws jar,幸好從未實際使用過。所以我只需要刪除它。如果我真的必須使用那個jar,我懷疑我可以排除xml-apis依賴並且仍然可以正常工作。

相關問題