java.lang.NoSuchMethodError出现的一种诡异情况

java.lang.NoSuchMethodError这种错误出现,很可能就是jar包冲突等等,如果其他方法不好使的话,可以看一下是不是下面这种情况。

三个jar包,A依赖B,B依赖C。例如 A调用B的b方法,B调用C的c方法,都通过maven编译发布,调用一切相安无事。一天,C的c方法变了返回值类型(例如int变成了long)且maven发布。这时在A中编译是没问题的,通过反射也可以取到原来的返回值类型,且类加载路径打印出来没问题,但是运行到c方法时就会报错java.lang.NoSuchMethodError。

解决方案:maven重新编译发布B。

原因:B编译时已经将c的返回值类型编译在字节码中,而A调用是引用的C包已经改变导致。

你可能感兴趣的:(java.lang.NoSuchMethodError出现的一种诡异情况)