如何解决依赖版本冲突(NoSuchMethodError's)

时间:2011-07-30 21:24:26

标签: java dependencies version jsoup nosuchmethoderror

在我的Spring 3.0.5 Web MVC应用程序中,我定义了一个带有@SafeHtml注释属性的模型类。当Spring试图验证这个模型对象时,会出现以下情况:

HTTP ERROR: 500

org.jsoup.Jsoup.isValid(Ljava/lang/String;Lorg/jsoup/safety/Whitelist;)Z
RequestURI=/guestbook/process-new-entry

Caused by:

java.lang.NoSuchMethodError: org.jsoup.Jsoup.isValid(Ljava/lang/String;Lorg/jsoup/safety/Whitelist;)Z
    at org.hibernate.validator.constraints.impl.SafeHtmlValidator.isValid(SafeHtmlValidator.java:62)
    at org.hibernate.validator.constraints.impl.SafeHtmlValidator.isValid(SafeHtmlValidator.java:34)
    at org.hibernate.validator.engine.ConstraintTree.validateSingleConstraint(ConstraintTree.java:278)
    ... (abbreviated)

我知道这是因为我没有使用正确版本的Jsoup。 (我使用的是0.2.2)在我使用的这个版本中,isValid()的方法签名已经更改或已被完全删除。所以要解决这个问题,我相信我应该使用不同版本的Jsoup。我对吗?

假设,如果我想继续使用我目前使用的版本怎么办?需要更改版本的另一部分是什么?它是Hibernate验证器吗?

此外,是否有人可以建议找出使用哪个版本的Jsoup? 通常如何解决这类错误?

最后一个问题,该行末尾的“Z”字母是什么意思?我有时也会遇到其他字母。这些字母是什么意思?这是在任何地方记录的吗?

提前感谢大家帮助我更好地理解如何解决这些版本差异,所以我不需要在将来浪费太多时间......干杯!

1 个答案:

答案 0 :(得分:2)

  1. 如果你想继续使用Jsoup 0.2.2,你必须看看是否有一个版本的hibernate-validator可以使用该版本,这似乎不太可能,因为我认为@SafeHtml约束很新,或者您必须看看是否可以修改源代码以使用该版本。
  2. 如果你想要一个明确回答Jsoup版本hibernate所期望的答案,你可以检查你正在使用的验证器工件的任何版本的pom。它们可以在maven central轻松获得。
  3. “Z”是原始布尔类型的类型描述符。 VM规范a table列出了可能的值。