我有變參的NoSuchMethodError與變參時調用方法
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 at
UPDATE
調試後,我看能追查原因並修復它。
'myMethod'屬於不同的jar。 當我編譯我的應用程序代碼時,還有另一個重載方法與上面提到的一起存在。
public static void myMethod(String processName, String sourceClass, String sourceFunction,
String message, Object... args) {
}
後來這個重載的方法被刪除並重新生成的jar和這個最終版本被添加到war pom中。
修復我做的是:
我再次編譯我的應用程序代碼與此最終版本,它解決。
只需使用一個對象可變參數。您可以檢查長度並稍後投射 –
打印更多堆棧並在堆棧中添加調用myMethod的代碼 – andy
該錯誤表示您正在運行的版本與您編譯的版本不同。 – VGR