为了账号安全,请及时绑定邮箱和手机立即绑定

nested exception is java.lang.NoSuchMethodError

nested exception is java.lang.NoSuchMethodError

慕森卡 2019-05-25 13:43:20
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的来源.
                            
查看完整回答
反对 回复 2019-05-25
?
慕仙森

TA贡献1827条经验 获得超7个赞

就是没有找到相关的方法。
cleaninstall编译没问题,不代表jar包就正确引入了。
你目前的这个框架里,引入的包是有这个方法么,自己先看一下。
然后就是排查一下依赖,是不是引入了低版本的。
就是这么几个思路。
                            
查看完整回答
反对 回复 2019-05-25
  • 2 回答
  • 0 关注
  • 2765 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信