gpt4 book ai didi

Java EE 应用程序中的 java.lang.NoSuchMethodError : org. apache.commons.codec.binary.Base64.encodeBase64String()

转载 作者:IT老高 更新时间:2023-10-28 20:46:15 24 4
gpt4 key购买 nike

我正在开发一个需要 Base64 编码/解码的 Java EE 应用程序

所以我在我的应用程序的 WEB-INF/lib 文件夹中添加了 commons-codec-1.5.jar 并使用了

import org.apache.commons.codec.binary.Base64;

在 Java 文件中。

在编译期间,当我输入 Base64 时,它显示 encodeBase64String 方法可用。但是在运行时它会抛出这样的异常:

java.lang.NoSuchMethodError:org.apache.commons.codec.binary.Base64.encodeBase64String

我在构建路径中有 JAR,但我仍然不明白为什么它会抛出上述错误。

最佳答案

那个方法是introduced在 Commons 编解码器 1.4 中。此异常表明您在 web 应用程序的运行时类路径中的其他位置有旧版本的 Commons Codec,它在类加载中具有优先权。检查 webapp 的运行时类路径涵盖的所有路径。这包括 Webapp/WEB-INF/libYourAppServer/libJRE/libJRE/lib/ext 。最后删除或升级有问题的旧版本。


更新:根据评论,您似乎找不到它。我只能建议使用较新的方法对代码进行注释,然后将以下行放在适当的位置:

System.out.println(Base64.class.getProtectionDomain().getCodeSource().getLocation());

这应该打印运行时加载它的 JAR 文件的绝对路径。


更新 2:这似乎指向了正确的文件。抱歉,我现在无法解释你的问题。我只能建议使用不同的 Base64 方法,例如 encodeBase64(byte[]) 然后自己构造一个 new String(bytes) .或者您可以删除该库并使用不同的 Base64 编码器,例如 this one .

关于Java EE 应用程序中的 java.lang.NoSuchMethodError : org. apache.commons.codec.binary.Base64.encodeBase64String(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7688644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com