首页 > 解决方案 > SUNOS上的Weblogic commons-codec Base64 nosuchMethodError

问题描述

用于解码的代码:Base64.decodeBase64("String");

Commons-codec jar 版本:1.9

异常:嵌套异常是 java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.decodeBase64(Ljava/lang/String;)

环境详细信息:操作系统:SunOS 版本:5.11 Java 版本:1.8.0_221(Oracle 公司)

在以下环境中工作的相同 WAR 环境详细信息:操作系统:AIX 版本:7.1 Java 版本:1.8.0_191(IBM JDK)

标签: javaspring-mvcweblogicweblogic12c

解决方案


如果你得到一个NoSuchMethodError,这意味着你有一个运行时版本不兼容的问题。代码库的某些部分取决于1一个版本,Base64该版本有一个调用的方法,该方法decodeBase64采用单个String参数。但是已经加载的类的版本没有那个方法。

该方法的 javadoc 中有一条线索。它说该方法已添加到Base64API 的 1.4 版中。因此,请检查已部署的 JAR 文件,以查看运行时类路径上是否存在 Apache Commons Codec JAR 的旧(1.4 之前)版本。


1 - 它可能是静态依赖;即正常的方法调用。它也可以是动态依赖;例如,尝试使用反射查找方法。


推荐阅读