若出现NoSuchMethodError异常,大家第一时间就会想到没这个方法或jar包问题:如下示例
java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.encodeBase64String() in Java EE application
我以为是我多个版本的缘故,后来我把低版本的全部删除了,仅留下commons-codec之1.5.jar,可是后来发现还是一直不行,始终还是报上面的NoSuchMethodError异常。
纠结了会儿想到了个办法,是不是其它jar包里面完全重写了Base64这个类导致的呢?可以用以下方式打印下Base64这个类来自具体的哪个jar包:
BinaryCodec.class.getProtectionDomain().getCodeSource().getLocation()
后来惊奇的发现果然是其它三方jar包(QQ登录的Sdk4J.jar)里面全重写Base64的commons-codec库,接下来的工作大家都知道了哈,就不废话了