2013-01-31 54 views
0

我有一個Maven項目。當我運行該項目時出現錯誤。錯誤的原因是Maven項目中的java.lang.NoSuchMethodError:org.w3c.tidy.Tidy.setHideComments錯誤

Caused by: java.lang.NoSuchMethodError: org.w3c.tidy.Tidy.setHideComments(Z)V 

我以爲jar可能會在Maven倉庫中丟失。但是我在該存儲庫中找到了該jar。

jtidy-4aug2000r7-dev.jar at C:\.m2\repository\jtidy\jtidy\4aug2000r7-dev

有沒有人告訴該問題的可能的原因。

+0

你究竟在哪裏得到這個錯誤? –

+0

@AndrewLogvinov當我嘗試瀏覽我的web應用程序中的一些頁面時。我得到這個日誌。 – Patan

回答

1

我想這個問題可能與jtidy.jar版本。你提到的當前版本已經很老了(2000年8月4日)。

我用谷歌搜索的版本4aug2000r7-dev.jar,發現了 API

我沒有看到Tidy.java

請檢查setHideComments()方法不具有相同的罐子的多個版本。

嘗試JTidy 8.0-SNAPSHOThere。它包含該方法。

+0

感謝您的回覆。我用上面提到的方法找到了一個最新的jar。你能告訴我如何替換.m2版本庫嗎? – Patan

+0

它的另一個問題。你需要編輯'pom.xml'。嘗試谷歌或SO更多的deails。 –

0

很可能你的jar文件比較老(2000年8月4日),可能是那些方法稍後添加的。嘗試使用這jar

1

A NoSuchMethodError發生在載入需要B類方法但不存在於JVM加載的B版本中的類時。在這種情況下,JVM希望找到一個簽名爲void setHideComments(boolean)的非私有方法,但它不在那裏。

有三種常見的原因:

  • 您已更改或刪除B中的方法,並重新編譯乙......但也不A.

  • 你有一些庫JAR的版本錯誤文件;例如包含A的JAR取決於包含B的JAR的不同版本,而不是您已列爲依賴項的JAR。

  • 前一個版本的一個變體是,在某種程度上,您在執行類路徑中有兩個版本的JAR文件。

假設你沒有修改jtidy,第一個解釋不適用。

+0

謝謝你的回覆。我正在使用舊版本的Jar,它沒有該方法。現在我已經有了更新的jar,但是我不知道如何在.m2版本庫中進行更新。你能告訴我如何解決它。 – Patan

+0

你不應該那樣做。您應該編輯項目的POM文件,以便依賴項引用您需要的特定版本。 –