记录一下Jrebel遇到的坑nested exception is java.lang.NoSuchMethodError
在项目中使用的Jrebel进行的热部署,在我对实体类进行了字段的添加或者类型更改之后。有时候会出这个异常,查看了class文件,没有问题。网上好多答案都是说是jar版本冲突。
但是问题没有解决!
原来是因为
NoSuchMethodError没有找到相关的方法,你编译能通过.这只能说明你的编译环境和你运行时环境的CLASSPATH有区别.这个问题打个断点或者把运行时对应的class反编译一下就能找到差别了.
因为jrebel会通过agenttransform修改class字节码.你需要找到jrebel配置的classdir,在对应的目录中找到PoiExcel2k3Helper文件,通过javap就可以查看对应的字节码.可能在这个文件中你定义的readExcelInArray方法是只有1个参数.
还有一个可能就是你的classpath环境中有2个PoiExcel2k3Helper文件,因为编译,运行时加载class的顺序不一致导致,你调用的方法也不一样.
至于查看运行时classpath环境,你通过classload加载class查看该类对应的方法就行.
ClassLoaderloader=Test.class.getClassLoader();
System.out.println(loader.getResource(“foo/Test.class”));
通过上面的代码,你可以知道class的来源.
## 解决办法
最简单的就是清空maven clean, 在重新启动
后来看了这篇文章才得到解决
[转载自](https://www.imooc.com/wenda/detail/559661)