zoukankan      html  css  js  c++  java
  • java.lang.NoSuchMethodError

    NoSuchMethodError是一个运行时错误,在编译时一般不会出现这个错误。

    既然能成功编译,就说明方法本身是存在的,方法所在的类也是存在的,而且都可以正常的引用到。

    出现这个问题的原因:

    方法本身是存在的,方法所在类也是存在的,那么在运行时还会出现这个错误,就只能说明运行时引用的类里面没有这个方法。

    这说起来有点拗口,简单的说,就是存在至少两个类名一样的类A和B,其中A有一个need方法,B则没有这个方法。编译时,编译器发现依赖路径下有需要的类A或者B,则编译通过。

    但是执行时,在要调用A.need()方法时,因为A和B同名,错误的调用了B.need()方法,这个方法本身是不存在的,自然就出现了NoSuchMethodError这个错误。

    解决办法:

    通过分析可以发现,其实问题产生的根本原因是类有冲突,也就是存在多个满足条件的类A,B,C..

    这种情况一般出现在引用某个库或者jar时,同时引用了多个版本而导致的。

    解决办法也简单,找出抛出NoSuchMethodError这个异常的类,然后找出包含这个类的所有Jar,然后保留正确的办法,把其他的jar删掉,就可以了。

    如果有多个包都有一个类,你不知道该删哪个的时候,那就一个个的试验吧。

    如果使用的是eclipse开发环境的话,ctrl+shift+T可以全局搜索类,包括jar包中的类。

    在.class文件的地方通过ctrl+o可以查看类中的方法。

  • 相关阅读:
    10年后方向
    nginx的配置文件server_name的意义 location意义
    java程序员应该知道的20个有用的库
    集群和分布式区别
    noVNC连接CentOS,以Web方式交付VNC远程连接
    centos7.2云主机安装桌面
    centos7.2 rabbitmq3.6.2源码部署
    Linux下打包压缩war和解压war包 zip和jar
    CentOS7.2下安装mongoDB3.2.8
    centos7 mysql5.7.17源码安装
  • 原文地址:https://www.cnblogs.com/1012hq/p/11474643.html
Copyright © 2011-2022 走看看