繁体   English   中英

为什么我的方法抛出NoSuchMethodError?

[英]Why does my method throw a NoSuchMethodError?

我已成功实现了reflectionEquals方法,其中包含一个排除字段列表。

return  EqualsBuilder.reflectionEquals(this, obj, new String[] {"files", "notes", "status"});

但是,我最近在Java 1.5上编译了我的程序,现在当程序遇到上述行时出现以下错误:

java.lang.NoSuchMethodError:org.apache.commons.lang.builder.EqualsBuilder。= reflectionEquals(Ljava / lang / Object; Ljava / lang / Object; [Ljava / lang / String;)Z

如果有人了解该方法在运行时不存在的原因,我将不胜感激

我遇到的每个NoSuchMethodError(最终)都发现在编译时类路径上的外部库版本与运行时类路径上的库版本不匹配(即 - 在这种情况下,编译应用程序时,在类路径上有一个不同版本的apache commons,而不是运行时。)

当您的代码被编译时,该方法肯定存在 - 或者抛出了编译器错误。

检查类路径上的commons-lang.jar的版本 - 我打赌你会发现不匹配。

值得注意的是,这不是一个MISSING jar文件 - 会抛出一个ClassNotFoundException(最终可能会跟一个NoClassDefFoundError。)

这可能是一个var args问题。 确保在java 1.5中重新编译所有内容并确保在java 1.5上运行它,并确保在编译时引用与运行时相同的jar。

您的运行时类路径上可能有旧版本。

获取最新版本的Apache Commons Lang

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM