使用var args

时间:2016-05-23 12:40:52

标签: java

我有一个用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);

  3. 我没有得到任何编译错误,但在运行时,第二次方法调用时出现以下错误,而第一次方法调用成功执行。

      

    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中。

    我做的修复是:

    我再次使用此最终版本编译了我的应用程序代码,并且已经解决。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

试试这个

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