【问题标题】:How to resolve java.lang.NoSuchMethodError [duplicate]如何解决 java.lang.NoSuchMethodError [重复]
【发布时间】:2018-06-22 07:48:07
【问题描述】:

我有一个可以在 Eclipse 中正确运行的项目,但是运行独立 jar 会在运行时给我一个类的 java.lang.NoSuchMethodError。

我解压了 jar 文件,可以在 jar 的一个库文件中看到类文件,并且确实看到了类中定义的方法。异常不是找不到类,而是找不到类中的方法。

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

【问题讨论】:

  • @Ravi 没有帮助。在我的问题中,我确实看到了包含在包中定义的方法的类文件。

标签: java eclipse maven-2 nosuchmethoderror


【解决方案1】:

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

【讨论】:

  • 我扩展了该可执行 jar 中的所有 jar。我为该类找到了两个类文件。反编译它们,它们都定义了相同的方法。
  • 你确定这两种方法的签名相同吗?
  • 尝试从可执行jar中一次取出一个类,只是为了验证分析。
  • 是的,两者的签名相同。我还尝试删除其中一个类并在 jar 中仅保留一份副本,但这并不能解决问题。
【解决方案2】:

NoSuchMethodError 发生在

...应用程序尝试调用一个类的指定方法(无论是静态的 或实例),并且该类 不再具有该类的定义 方法。通常,这个错误会被编译器捕获;这个错误可以 仅当类的定义不兼容时才会在运行时发生 改变了

如强调的那样,有两种可能性:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 2020-09-20
    • 2018-03-26
    相关资源
    最近更新 更多