调用带有var args的方法时出现NoSuchMethodError



我有一个用var args 定义的方法

public static void myMethod(String sourceClass, String sourceFunction,
String message, Object... args) {
}

我用两种方式调用这个方法。

  1. myMethod(className, methodName, "List of all users : {}", userLists);

  2. myMethod(className, methodName, "consumers of reqID : {} are : {}", reqID, userLists);

我没有得到任何编译错误,但在运行时,我在第二个方法调用中得到了以下错误,而第一个方法调用成功执行。

java.lang.NoSuchMethodError.com.example.MyClass.myMyMyMethod

更新

经过调试,我可以追踪原因并修复它

"myMethod"属于不同的jar。当我编译我的应用程序代码时,除了上面提到的方法之外,还有另一个下面重载的方法。

public static void myMethod(String processName, String sourceClass, String sourceFunction,
String message, Object... args) {
}

后来,这个重载的方法被删除并重新生成jar,这个最终版本被添加到war-pom中。

我做的修复是:

我再次用这个最终版本编译了我的应用程序代码,它得到了解决。

清理您的项目并尝试重新构建。此外,您可能依赖JAR文件进行编译,并在运行时使用不同的版本。

尝试这个

myMethod("ClassName", "methodName", "message", new InstanceOfClass());

最新更新