我有一个用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.myMethod(Ljava / lang / String; Ljava / lang / String; Ljava / lang / String; Ljava / lang / String; [Ljava / lang / Object;)V在
更新
调试后,我能够追踪原因并修复它。
'myMethod'属于不同的jar。 当我编译我的应用程序代码时,还存在另一个下面重载的方法以及上面提到的方法。
public static void myMethod(String processName, String sourceClass, String sourceFunction,
String message, Object... args) {
}
稍后这个重载方法被删除并重新生成jar,最终版本将添加到war pom中。
我做的修复是:
我再次使用此最终版本编译了我的应用程序代码,并且已经解决。
答案 0 :(得分:1)
清理项目并尝试重新构建。您也可能依赖于JAR文件来编译并在运行时使用不同的版本。
答案 1 :(得分:0)
试试这个
myMethod("ClassName", "methodName", "message", new InstanceOfClass());