Spring中的NoSuchMethodError Tomcat应用

问题描述:

我试图实现一个新的安全bean,它依赖于一些Base64编码。在eclipse中,类编译得很好,事实上,它在部署到tomcat时生成,在本地运行;然而,当代码实际上达到了线它调用Spring中的NoSuchMethodError Tomcat应用

Base64.encodeBase64String(rawBytes) 

我得到这个

SEVERE: Servlet.service() for servlet analytics threw exception 
java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.encodeBase64String([B)Ljava/lang/String; 

我照顾导入我想(org.apache.commons.codec类型。 binary.Base64)并尝试更改调用以使用方法的绝对包名称。

当我检查项目的pom.xml中,我看到下面的存在,并且它是正确的神器,根据Apache站点:

<dependency> 
     <groupId>commons-codec</groupId> 
     <artifactId>commons-codec</artifactId> 
    </dependency> 

寻找在Eclipse的依赖层次视图,commons-codec jar包含在编译时1.4版本(包含有问题的类)。

一个类似的问题在这里建议清除tomcat的工作目录,所以我没有这样做。我不是maven或tomcat的专家,所以任何建议都会有帮助。我知道这是一个非常具体的问题,所以我发布这个希望有一些线索,并向我自己澄清问题。不过,我会接受任何指向正确方向的答案!

+0

是commans-codec.jar出现在你的WEB-INF/lib文件夹中的webaplication下? – allthenutsandbolts 2012-07-16 17:47:57

+0

yes:commons-codec-1.4.jar – Ben 2012-07-16 18:00:34

尝试使用该库的最后一个版本:

<dependency> 
    <groupId>commons-codec</groupId> 
    <artifactId>commons-codec</artifactId> 
    <version>20041127.091804</version> 
</dependency> 
+0

做出更改后甚至无法启动应用程序: [错误]无法执行项目目标__.web.analytics:无法解析项目__的依赖关系__。web .analytics:war:1.1.2-SNAPSHOT:未能在http://dev01.__.corp/nexus/content/groups/public中找到commons-codec:commons-codec:jar:20041127.091804缓存在本地存储库中,在cond.repo.dev01-public的更新时间间隔已过或强制更新之前,不会重新尝试分辨率 – Ben 2012-07-16 18:06:30

+0

它不应该成为问题,因为它位于存储库中http://mvnrepository.com/artifact/commons-codec/commons-codec无论如何,尝试与以前的版本:1.6 – jddsantaella 2012-07-16 18:09:01

+0

与1.6尝试,没有区别,悲伤。也就是说,我以前试过,仍然得到NoSuchMethod – Ben 2012-07-16 18:09:50