2014-06-16 35 views
1

我總是有一些最模糊的問題,我經常會發現類似的問題,但那些並不適用於我的實際問題......m2eclipse的顯示錯誤,但Maven的編譯罰款

反正,我在Eclipse中出現M2Eclipse問題時顯示錯誤。目前,我的POM.xml引用xml-apis:xml-apis的某些版本(是的,我知道Xerces的問題),顯然,xml-apis取代並不覆蓋JDK中的類。其中一個具體例子是JDK中的rt.jar中的org.w3c.dom.Element;這個類存在,但xml-apis有一個具有相同名稱和包結構的類,有效地取代它 - 或者Eclipse認爲。

這對我來說很糟糕的是,因爲xml-apis取代了這個實現而不是重寫它,所以代碼中有引用(我已經被授權從Ant遷移到Maven,您可以在其中更改構建順序並且Eclipse會停止發出whinge)庫的位置不匹配。例如,Element e; e.getTextContext();將產生一個錯誤,例如「The method getTextContent() is undefined for the type Element」。不過,此錯誤僅在Eclipse的編輯器和「問題」窗口中顯示。但Maven編譯它就好了......那麼爲什麼Eclipse會顯示一個錯誤?

據我所知,沒有辦法在Eclipse中的Maven項目中更改構建順序,使其停止執行此操作。有沒有人有任何解決方案?

供參考(如果它很重要,我懷疑)我正在運行Windows 7專業版,使用JDK 1.6進行編譯,並且使用Maven 3.0.4。

回答

2
select your project > right click > properties > java build path > order and export > select JRE entry and hit down 

在這裏你可以控制類路徑條目的順序,因此,如果你想從你的Maven的罐子得到回升首先將其移動到前JRE的入門

+0

我不知道爲什麼我沒有嘗試這個。謝謝!儘管如此,仍然存在一個差異,那就是顯然,Maven的依賴關係應該在JDK之後。 –

+0

爲什麼它應該在JDK的入口之後? –

+0

打敗我;我原來在JDK之前就已經有了它,而這正是導致錯誤的原因 - 在JDK修復它之後將其切換爲JDK。 我確定編譯器有一些機制,它會注意到存在一個具有重複路徑/名稱的類,並且只在第一個找到它之前找到它。 –

相關問題