最近一次上线更新了项目中使用的 Jsoup 版本,从 1.4.1 更新到 1.10.3,发现后台某个类 A 报 java.lang.NoSuchMethodError,找不到 Elements.add 这个方法。 由于上线都是搞增量包更新,A.java 并未进行过修改,所以没更新 A.class 文件。比较了两个版本下 ..

更新 JAR 包版本引发的问题

本贴最后更新于 914 天前,其中的信息可能已经事过景迁

最近一次上线更新了项目中使用的 Jsoup 版本,从 1.4.1 更新到 1.10.3,发现后台某个类 A 报 java.lang.NoSuchMethodError,找不到 Elements.add 这个方法。
由于上线都是搞增量包更新,A.java 并未进行过修改,所以没更新 A.class 文件。比较了两个版本下 A.class,发现文件大小变了。
jsoup1.4.1 版本 Elements 定义:public class Elements implements List
jsoup1.10.3 版本 Elements 定义:public class Elements extends ArrayList
所以旧的 A.class 中引用的 add 方法是 Elements 类实现的 add,新版本 A.class 中引用的 add 方法是 ArrayLis 类的 add。
不更新 A.class,当然找不到 Elements.add 方法了。

总结:jar 更新版本时,源文件未修改不代表 class 文件也未修改,还是扫描下 class 文件变化比较好。

回帖
请输入回帖内容...