"
Handler processing failed; nested exception is
java.lang.NoSuchMethodError:
com.eroadsf.framework.web.system.util.PoiExcel2k3Helper.readExcelInArray(Ljava/lang/String;I[Ljava/lang/String;)Ljava/util/ArrayList
我的函数原型是这样的 public ArrayList<String[]> readExcelInArray(String
filePath, int sheetIndex, String[] columns) {
我是这样调用的 helper.readExcelInArray(file.getPath(),sheetIndex,clomns)
<font color=red> 我上过Stack Overflow,感觉回答都不怎么样,也没有热度高的</font>
有没有大神知道原因的
" ![image.png](https://ucc.alicdn.com/pic/developer-ecology/61287756160d4506936956fc8b07f088.png)"
NoSuchMethodError
没有找到相关的方法, 你编译能通过. 这只能说明你的编译环境
和你运行时环境
的CLASSPATH
有区别.
这个问题打个断点或者把运行时对应的 class 反编译一下就能找到差别了.
######
- 因为 jrebel 会通过 agent transform 修改
class
字节码. 你需要找到 jrebel 配置的class dir
, 在对应的目录中找到PoiExcel2k3Helper
文件, 通过javap
就可以查看对应的字节码. 可能在这个文件中你定义的readExcelInArray
方法是只有1个参数.- 还有一个可能就是你的
classpath
环境中有2个PoiExcel2k3Helper
文件, 因为编译, 运行时加载class
的顺序不一致导致, 你调用的方法也不一样.- 至于查看运行时
classpath
环境, 你通过classload
加载class
查看该类对应的方法就行.ClassLoader loader = Test.class.getClassLoader(); System.out.println(loader.getResource("foo/Test.class"));
通过上面的代码, 你可以知道
class
的来源.
就是没有找到相关的方法。
clean install 编译没问题,不代表jar包就正确引入了。
你目前的这个框架里,引入的包是有这个方法么,自己先看一下。
然后就是排查一下依赖,是不是引入了低版本的。
就是这么几个思路。
" ![image.png](https://ucc.alicdn.com/pic/developer-ecology/6644f0b6889d456da5a7be4760169126.png)版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。