我的Web应用程序中出现以下异常:
java.util.concurrent.ExecutionException: java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.encodeBase64URLSafeString([B)Ljava/lang/String;
commons-codec-1.5.jar已添加到我的类路径中。我正在使用Ant构建它,并手动添加了依赖项。通过对同一问题的其他讨论,我发现添加该库的源代码可以解决此问题,但是这对我不起作用。我还读到,拥有另一个具有相同类的库可能会导致冲突,并且可能该类可能没有此方法,从而导致错误。但是,我仔细检查了同一库是否没有其他版本。其他库中是否可能有相同的类?如果是,那么我该如何识别并解决问题?
最佳答案
正如您在问题中提到的那样,这是由于在编译时使用的Base64
类的版本与运行时使用的版本不同而引起的。由于您正在使用Ant(例如,而不是Maven),因此查找罪魁祸首应该更容易,因为您不必担心传递依赖项。
要做的第一件事是使用IDE打开类Base64
(在IntelliJ中为ctrl + N),这将突出显示您的类路径中有多少个版本的该库。以我为例,有2个。如果您有多个,那么您就找到了罪魁祸首。
如果您的类路径上只有一个版本,则该类可以驻留的其他唯一位置是Tomcat的lib目录。您可能必须手动打开jar文件,以查看是否包含相同的软件包org.apache.commons.codec.binary...
。
关于java - java.lang.NoMethodError:org.apache.commons.codec.binary.Base64.encodeBase64URLSafeString,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41737970/