清理项目后出现 NoSuchMethodError

NoSuchMethodError after cleaning the project

我目前遇到这个错误:

java.lang.NoSuchMethodError: org.json.JSONObject.keySet()Ljava/util/Set;
at ee.ut.cs.Parser.accessLint(Parser.java:39)

我已经尝试清理项目,但没有成功。

我怀疑我在创建 jar 文件时 src/plugin/parse-htmlraw/build.xml 中有错误,但我不确定。我知道这个错误是因为该函数在运行时不存在,但是创建了对象,这意味着 class 存在,只是没有那个函数。我在创建的 jar 中反编译了 .class 文件,它具有必要的功能。

代码可在 https://github.com/jaansusi/WCAGgrader

问:生成此错误的构建有什么问题?

问题是,即使我将必要的 class 文件放入我创建的 jar 中,它们也没有正确链接,并且在 jar 中调用的 class 可以' 在其他 class 中找到函数。 class 对象 JSONObject 已创建,但无法找到 JSONObject class 中的函数。

检查您使用的版本。 可能会出现使用 2 个不同版本而导致此错误的情况。

到自己的maven本地仓库com\Google\code\gson\gson,看看有没有两个以上的版本json,要做的就是把旧的删掉,其他地方记得看看在项目中引入老版本的依赖,如果有的话,把老版本的依赖改成新版本就完美解决了这个问题

如果您没有找到有问题的版本,您可能会从以下依赖项中获得它(特别是如果您使用 Spring)-

<artifactId>android-json</artifactId>
<groupId>com.vaadin.external.google</groupId>

排除它对我有用,

  • 分析依赖关系的一种简单方法是 Intellij 中的 maven-helper 插件,参见 here