1

我的 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 构建它并手动添加了依赖项。通过对同一问题的其他讨论,我发现添加此库的源可以解决问题,但这对我不起作用。我还读到拥有另一个具有相同类的库可能会导致冲突,并且可能该类可能没有导致错误的此方法。但是,我仔细检查了同一个库没有其他版本。是否有可能其他一些库中有相同的类?如果是,那么我该如何识别并解决问题?

4

1 回答 1

3

正如您在问题中提到的那样,这是由于Base64在编译时使用的类的不同版本与在运行时使用的类不同。由于您使用的是 Ant(例如,而不是 Maven),因此应该更容易找到罪魁祸首,因为您不必担心传递依赖。

要做的第一件事是使用您的 IDE 打开类Base64(在 IntelliJ 中为 ctrl+N),这将突出显示您的类路径中有多少不同版本的该库。就我而言,有 2 个。如果您有多个,那么您已经找到了罪魁祸首。

如果您的类路径中只有一个版本,那么该类唯一可以驻留的其他位置是 Tomcat 的 lib 目录。您可能必须手动打开 jar 文件以查看是否包含相同的包org.apache.commons.codec.binary...

于 2017-01-19T09:49:34.220 回答