java - 使用 var args 调用方法时出现 NoSuchMethodError

标签 java

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

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

 }

我以两种方式调用此方法。

  1. myMethod(className, methodName, "所有用户列表:{}", userLists);

  2. 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/

相关文章:

java - 指定任务可执行位置 "C:\Program Files (x86)\Java\jdk1.7.0_71\\bin\javac.exe"无效

java - 将韩文(韩文字母)字母分解为各个元素?

java - 在 § 之前附加一个特殊字符

java - 在 Guice 中动态绑定(bind)实例

java - Getter 和 Setter 方法以及读取 txt 文件

java - Java 遗传算法的轮盘赌选择

java - 如何使用 junit 5 (Jupiter) 模拟 RestTemplate 交换

java - 将线性布局背景分成不同颜色的部分

java - 无法安装JDK

java - 你如何比较Java中的两个版本字符串?