调用方法时使用的错误参数类型,导致NoSuchMethodError

时间:2014-10-10 14:43:14

标签: java arguments nosuchmethoderror

我一直潜伏在这里一段时间,我最近遇到了一个我无法在互联网上找到的问题。这是我的问题:

我在名为SupervisionService.java的文件中有一个名为saveLog的方法,该文件在如下文件中定义:

@Override
public void saveLog(Logger logger, String activationKey, String description, Level Level, MyObject myObject) {
       //do stuff
}

如您所见,方法的参数是(Logger,String,String,Level,MyObject)

在外部环境上发生以下问题,该外部环境应该与我拥有的外部环境类似(jonas服务器,db的pgsql): 使用以下行调用方法时:

service.saveLog(LOGGER, "mykey", description, Level.error, null);

我收到以下错误:

85 root cause java.lang.NoSuchMethodError: myApp.service.SupervisionService.saveLog(Lorg/apache/log4j/Logger;Ljava/lang/String;Ljava/lang/String;LmyApp/model/reference/Level;Ljava/lang/Integer;)V  

应用程序正在寻找的最后一个参数是Integer类型,尽管文件中唯一一个具有该名称的方法正在等待MyObject类型。我不知道这是否是java传递null参数时的行为方式,因此问题出在其他地方,或者问题是否直接存在于此参数类型错误中。

最困扰我的是,问题发生在我无法控制的一个环境中,而且它现在已经完全像其他两个一样完美地工作了。 我希望有人能够遇到同样的问题,或者会有一些线索的人看到这个帖子,这样他就能启发我。

PS:因为这是我的第一篇帖子,我会尽量把它放到正确的部分,如果出现任何问题,请随时告诉我,我会尝试制作它右

每个人都有一个愉快的下午

0 个答案:

没有答案