我有一个用var args 定义的方法
public static void myMethod(String sourceClass, String sourceFunction,
String message, Object... args) {
}
我用两种方式调用这个方法。
myMethod(className, methodName, "List of all users : {}", userLists);
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());