Weblogic commons-codec Base64 nosuchMethodError on SUNOS
Weblogic commons-codec Base64 nosuchMethodError on SUNOS
用于解码的代码:
Base64.decodeBase64("String");
Commons-codec jar 版本:1.9
异常:
嵌套异常是 java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.decodeBase64(Ljava/lang/String;)
环境详细信息:
OS:太阳OS
版本:5.11
Java版本:1.8.0_221(甲骨文公司)
相同 WAR 在以下环境中工作
环境详情:
OS:AIX
版本:7.1
Java 版本:1.8.0_191 (IBM JDK)
如果您得到 NoSuchMethodError
,这意味着您遇到了运行时版本不兼容的问题。代码库的某些部分依赖于 1 Base64
的一个版本,它有一个名为 decodeBase64
的方法,该方法接受一个 String
参数。但是已经加载的class版本没有那个方法。
javadoc 中有该方法的线索。它说该方法是在 API 的 1.4 版本中添加到 Base64
中的。因此,请检查部署的 JAR 文件,看看运行时 classpath.
上是否有旧版(1.4 之前)的 Apache Commons Codec JAR
1 - 它可能是静态依赖;即正常的方法调用。它也可能是动态依赖;例如尝试使用反射查找方法。
用于解码的代码: Base64.decodeBase64("String");
Commons-codec jar 版本:1.9
异常: 嵌套异常是 java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.decodeBase64(Ljava/lang/String;)
环境详细信息: OS:太阳OS 版本:5.11 Java版本:1.8.0_221(甲骨文公司)
相同 WAR 在以下环境中工作 环境详情: OS:AIX 版本:7.1 Java 版本:1.8.0_191 (IBM JDK)
如果您得到 NoSuchMethodError
,这意味着您遇到了运行时版本不兼容的问题。代码库的某些部分依赖于 1 Base64
的一个版本,它有一个名为 decodeBase64
的方法,该方法接受一个 String
参数。但是已经加载的class版本没有那个方法。
javadoc 中有该方法的线索。它说该方法是在 API 的 1.4 版本中添加到 Base64
中的。因此,请检查部署的 JAR 文件,看看运行时 classpath.
1 - 它可能是静态依赖;即正常的方法调用。它也可能是动态依赖;例如尝试使用反射查找方法。