问题:
跑项目的时候发现了一个报错。NoSuchMethodError,这个错误的的意思就是没有所调用的方法,但是我那时候就纳闷了。为没有这个方法不会报错呢?在调试工具里面,一时间也无法无从下手。—经验不够。
继续看报错看到一行这样的提示,
XXX.xxx.xxx.类(ILjava/lang/string;)V
然后接着一系列的错误
解释一下
(ILjava/lang/string;)V
的意思是 void (int param1,String param) 具体可在网上查找
于是上网查找原因看到这样一篇文章
https://stackoverflow.com/questions/12069875/java-lang-nosuchmethoderror-fr-la-juserright-metier-ressource-initiljava-lan
里面说是由于没有类的构造方法()
于是找到具体的类,看到有参数为(int i,String s)的构造方法啊。
后来我在工程下面又新建了已经打包成jar的一个类。发现,其提示了错误没有构造方法(int i,String s)于是查看其引用的类,却发现来自不同的jar包。 找到问题原因了,便是有两个一样jar包
问题原因
不同的jar包含有相同的Java类冲突而导致。也不是冲突,就是引用错了,而导致引用到那个没有方法的类,真正有方法的类却没被引用到。
解决办法
去除其中一个,或者重命名。