如何解决java.lang.NoSuchMethodError

How to resolve java.lang.NoSuchMethodError

我有一个项目,我可以从 Eclipse 中正确地 运行,但是 运行 独立 jar 为我提供了 java.lang.NoSuchMethodError 的 class 运行时间。

我解压了 jar 文件,可以在 jar 的一个库文件中看到 class 文件,我确实看到了 class 中定义的方法。异常不是class没有找到,只是找不到class中的方法。

在互联网上找不到任何有用的信息来解决这个问题。

很可能依赖项中有另一个 jar 具有相同的 class(可能是同一库的另一个版本)但没有此方法。我认为后者 class 是加载的而不是您解压的那个。

NoSuchMethodError 发生在

... application tries to call a specified method of a class (either static or instance), and that class no longer has a definition of that method. Normally, this error is caught by the compiler; this error can only occur at run time if the definition of a class has incompatibly changed

正如突出显示的那样,有两种可能性:

  1. 两种方法定义都不存在
  2. 如果存在方法定义,则它们可能有不兼容的更改,即您可能在运行时使用不同版本的 jar/class。