【问题标题】:NoSuchMethodError in Spring Tomcat appSpring Tomcat 应用程序中的 NoSuchMethodError
【发布时间】:2012-07-16 17:43:31
【问题描述】:

我正在尝试实现一个新的安全 bean,它依赖于一些 Base64 编码。在eclipse中,这个类编译得很好,事实上,它在部署到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 的专家,所以任何建议都会有所帮助。我知道这是一个非常具体的问题,所以我发布这个是希望得到一些线索,并向自己澄清这个问题。不过,我会接受任何指向正确方向的答案!

【问题讨论】:

  • commans-codec.jar 是否存在于您的 webaplication 下的 WEB-INF/lib 文件夹中?

标签: spring tomcat maven nosuchmethoderror


【解决方案1】:

尝试使用最新版本的库:

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

【讨论】:

  • 进行更改后甚至无法启动应用程序:[错误] 无法在项目 .web.analytics 上执行目标:无法解析项目 _: i>.web.analytics:war:1.1.2-SNAPSHOT: 未能在dev01._.corp/nexus/content/groups/public 中找到 commons-codec:commons-codec:jar:20041127.091804@.corp/nexus/content/groups/public本地存储库,直到 cond.repo.dev01-public 的更新间隔已过或强制更新后才会重新尝试解析
  • 它应该不是问题,因为它在存储库中mvnrepository.com/artifact/commons-codec/commons-codec 无论如何,尝试使用以前的版本:1.6
  • 用 1.6 试过了,没什么区别,很遗憾。也就是我之前试过了,还是得到NoSuchMethod
  • 好吧,现在我们到了某个地方。我尝试了反射技巧来确定正在使用的 jar,它是 .m2/repository/commons-codec/commons-codec/1.3/commons-codec-1.3.jar 那么找出包含哪些内容的最佳方法是什么?
  • 所以问题出在版本上,正如我所怀疑的那样。看看这个答案:stackoverflow.com/a/7688667/980472
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-09
  • 2015-10-31
  • 1970-01-01
  • 1970-01-01
  • 2013-04-24
  • 2017-01-04
  • 1970-01-01
相关资源
最近更新 更多