我有一个用 var args 定义的方法
public static void myMethod(String sourceClass, String sourceFunction,
String message, Object... args) {
}
我以两种方式调用此方法。
myMethod(className, methodName, "所有用户列表:{}", userLists);
myMethod(类名, 方法名, “reqID : {} 的消费者是 : {}”, 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 at
更新
调试后,我可以追踪原因并修复它。
“myMethod”属于不同的 jar。 当我编译我的应用程序代码时,除了上面提到的方法之外,还存在另一个下面的重载方法。
public static void myMethod(String processName, String sourceClass, String sourceFunction,
String message, Object... args) {
}
后来这个重载方法被删除并重新生成jar,并且这个最终版本被添加到war pom中。
我所做的修复是:
我再次用这个最终版本编译了我的应用程序代码,它已得到解决。
最佳答案
清理您的项目并尝试再次构建。此外,您可能依赖 JAR 文件在运行时编译和使用不同的版本。
关于java - 使用 var args 调用方法时出现 NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37391296/