【问题标题】:Weblogic commons-codec Base64 nosuchMethodError on SUNOS [duplicate]SUNOS上的Weblogic commons-codec Base64 nosuchMethodError [重复]
【发布时间】:2020-09-29 21:32:19
【问题描述】:

用于解码的代码: Base64.decodeBase64("字符串");

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(甲骨文公司)

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

【问题讨论】:

    标签: java spring-mvc weblogic weblogic12c


    【解决方案1】:

    如果您收到NoSuchMethodError,则表示您遇到了运行时版本不兼容问题。代码库的某些部分依赖于1Base64 的一个版本,该版本具有一个名为 decodeBase64 的方法,该方法采用单个 String 参数。但是已经加载的类的版本没有那个方法。

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


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

    【讨论】:

    • 我也检查了那个版本。 1.9 只有在那里。相同的 WAR 在 AIX 中运行良好,但在 SunOS 中无法运行。有什么需要做的配置吗?
    • 检查您是否在两个平台上使用相同版本的 Weblogic。
    • weblogic 版本相同。唯一的区别是环境
    • 您的 WAR 文件中可能有两个不同的 Apache Commons Codec JAR 文件。查看。如果这没有帮助,请将 JVM 配置更改为包含“-verbose:class”,然后查看从哪里加载 Base64 类。
    • 只有你才能发现问题,因为只有你才能访问环境。我的猜测是其中一个 jar 中有第二个 Base64 类,不同的环境可以在类路径中以不同的方式排序 jar,java 将从它找到的第一个 jar 加载该类。 @StephenC 的建议是最好的,使用 -verbose:class 查找从哪个 jar Base64 加载。是你期待的吗?
    猜你喜欢
    • 1970-01-01
    • 2017-10-16
    • 2017-04-18
    • 2020-09-03
    • 2014-10-05
    • 2015-11-04
    • 1970-01-01
    • 2023-03-25
    • 2012-11-05
    相关资源
    最近更新 更多