Handlerprocessingfailed;nestedexceptionisjava.lang.NoSuchMethodError:com.eroadsf.framework.web.system.util.PoiExcel2k3Helper.readExcelInArray(Ljava/lang/String;I[Ljava/lang/String;)Ljava/util/ArrayList我的函数原型是这样的publicArrayListreadExcelInArray(StringfilePath,intsheetIndex,String[]columns){我是这样调用的helper.readExcelInArray(file.getPath(),sheetIndex,clomns)我上过StackOverflow,感觉回答都不怎么样,也没有热度高的我cleaninstall了很多遍,编译没问题!有没有大神知道原因的
2 回答
狐的传说
TA贡献1804条经验 获得超3个赞
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的来源.
慕仙森
TA贡献1827条经验 获得超7个赞
就是没有找到相关的方法。cleaninstall编译没问题,不代表jar包就正确引入了。你目前的这个框架里,引入的包是有这个方法么,自己先看一下。然后就是排查一下依赖,是不是引入了低版本的。就是这么几个思路。
添加回答
举报
0/150
提交
取消