猿问

nested exception is java.lang.NoSuchMethodError

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了很多遍,编译没问题!
有没有大神知道原因的
慕森卡
浏览 2766回答 2
2回答

狐的传说

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的来源.

慕仙森

就是没有找到相关的方法。cleaninstall编译没问题,不代表jar包就正确引入了。你目前的这个框架里,引入的包是有这个方法么,自己先看一下。然后就是排查一下依赖,是不是引入了低版本的。就是这么几个思路。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答