Информация о методе ( java.util.HashMap) не найдена в классе ʻorg.apache.log.Logger'

 log.info(m.differenceValue(jsonElement1,jsonElement2)); 

Вызов функции из бобовой оболочки. Код реализован в jar-файле.

public static <K, V> Map<String,Object> differenceValue(JsonElement json1, JsonElement json2){
    Gson g = new Gson();

    Type mapType = new TypeToken<Map<String, Object>>(){}.getType();
    Map<String,Object> firstMap = g.fromJson(json1, mapType);
    Map<String, Object> secondMap = g.fromJson(json2, mapType);
   return(mapDifference(firstMap,secondMap));
}      
public static <K, V> Map<K, V> mapDifference(Map<? extends K, ? extends V> left, Map<? extends K, ? extends V> right) {
    Map<K, V> difference =  new HashMap<K, V>();
    difference.putAll(left);
    difference.putAll(right);
    difference.entrySet().removeAll(right.entrySet());
    return difference;
}

Это работает нормально в затмении, но в Jmeter это бросает

ошибка: информация о методе ( java.util.HashMap) не найдена в классе ʻorg.apache.log.Logger'

2 ответа

Решение

Пытаться log.info(m.differenceValue(jsonElement1,jsonElement2).toString());

согласно документации, это может работать для HashMap (в зависимости от того, что у вас есть для ключей и значений там)

public String toString ()

Возвращает строковое представление этой карты. Строковое представление состоит из списка отображений значения ключа в порядке, возвращаемом итератором представления entrySet карты, заключенным в фигурные скобки ("{}"). Смежные сопоставления разделены символами ", " (запятая и пробел). Каждое сопоставление значения ключа отображается как ключ, за которым следует знак равенства ("="), за которым следует соответствующее значение. Ключи и значения преобразуются в строки как String.valueOf(Object).

Вы пытаетесь передать Map в Logger, в то время как он принимает только Strings для методов info (), warn () и т. Д. Вам нужно будет как-то привести карту к String.

Кроме того, я не думаю, что у вас есть поддержка дженериков в Beanshell, рассмотрите возможность перехода на элементы JSR223 и язык Groovy.

Другие вопросы по тегам