0

我有一个 Maven 项目。当我运行该项目时,我遇到了错误。错误的原因是

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

有人能说出问题的可能原因吗?

4

3 回答 3

1

我想问题可能出在jtidy.jar. 您提到的当前版本相当旧(2000 年 8 月 4 日)。

我搜索了版本4aug2000r7-dev.jar并找到了 API

我在Tidy.java 中看setHideComments()不到方法

请检查您没有同一个 jar 的多个版本。

试试JTidy 8.0-SNAPSHOT 这里。它包含方法。

于 2013-01-31T12:03:52.330 回答
1

当您加载一个ANoSuchMethodError类时,会发生 A 类,该类需要在 JVM 已加载的 B 版本中不存在的类 B 上的方法。在这种情况下,JVM 期望找到一个带有签名的非私有方法void setHideComments(boolean)……但它不存在。

常见的原因有以下三种:

  • 您已经更改或删除了 B 中的方法并重新编译了 B ...但也没有重新编译 A。

  • 您有一些库 JAR 文件的错误版本;例如,包含 A 的 JAR 依赖于包含 B 的 JAR 的不同版本,而不是您列为依赖项的版本。

  • 前一个版本的一个变体是,不知何故,在执行类路径上您有一个或另一个 JAR 文件的两个版本。

假设您没有修改 jtidy,则第一个解释不适用。

于 2013-01-31T12:05:55.267 回答
0

很可能您的 jar 文件很旧(2000 年 8 月 4 日)并且可能是这些方法是后来添加的。尝试使用这个罐子

于 2013-01-31T12:01:46.823 回答