Handler processing failed; nested exception isjava.lang.NoSuchMethodError:com.eroadsf.framework.web.system.util.PoiExcel2k3Helper.readExcelInArray(Ljava/lang/String;I[Ljava/lang/String;)Ljava/util/ArrayList
我的函數原型是這樣的 public ArrayList<String[]> readExcelInArray(StringfilePath, int sheetIndex, String[] columns) {
我是這樣調用的 helper.readExcelInArray(file.getPath(),sheetIndex,clomns)
<font color=red> 我上過Stack Overflow,感覺回答都不怎么樣,也沒有熱度高的</font>
我clean install 了很多遍,編譯沒問題!
有沒有大神知道原因的
2 回答

qq_笑_17
TA貢獻1818條經驗 獲得超7個贊
NoSuchMethodError
沒有找到相關的方法, 你編譯能通過. 這只能說明你的編譯環(huán)境
和你運行時環(huán)境
的CLASSPATH
有區(qū)別.
這個問題打個斷點或者把運行時對應的 class 反編譯一下就能找到差別了.
- 因為 jrebel 會通過 agent transform 修改
class
字節(jié)碼. 你需要找到 jrebel 配置的class dir
, 在對應的目錄中找到PoiExcel2k3Helper
文件, 通過javap
就可以查看對應的字節(jié)碼. 可能在這個文件中你定義的readExcelInArray
方法是只有1個參數.- 還有一個可能就是你的
classpath
環(huán)境中有2個PoiExcel2k3Helper
文件, 因為編譯, 運行時加載class
的順序不一致導致, 你調用的方法也不一樣.- 至于查看運行時
classpath
環(huán)境, 你通過classload
加載class
查看該類對應的方法就行.ClassLoader loader = Test.class.getClassLoader(); System.out.println(loader.getResource("foo/Test.class"));
通過上面的代碼, 你可以知道
class
的來源.

手掌心
TA貢獻1942條經驗 獲得超3個贊
就是沒有找到相關的方法。
clean install 編譯沒問題,不代表jar包就正確引入了。
你目前的這個框架里,引入的包是有這個方法么,自己先看一下。
然后就是排查一下依賴,是不是引入了低版本的。
就是這么幾個思路。
添加回答
舉報
0/150
提交
取消