[英]No message body writer found for class : class java.util.HashMap
[英]Method info( java.util.HashMap ) not found in class'org.apache.log.Logger'
log.info(m.differenceValue(jsonElement1,jsonElement2));
從beanshell調用函數。 該代碼在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;
}
在Eclipse中工作正常,但在jmeter中拋出
錯誤:在類'org.apache.log.Logger'中找不到方法信息(java.util.HashMap)
您正在嘗試將Map傳遞給Logger,而Logger僅接受info() , warn()等的字符串。您將需要以某種方式將Map轉換為String。
另外,我認為您在Beanshell中沒有泛型支持,請考慮改用JSR223 Elements和Groovy語言 。
嘗試log.info(m.differenceValue(jsonElement1,jsonElement2).toString());
根據文檔,這可能適用於HashMap(取決於您那里的鍵和值)
公共字符串toString()
返回此映射的字符串表示形式。 字符串表示形式由鍵值映射列表組成,這些鍵值映射由映射的entrySet視圖的迭代器返回,並用大括號(“ {}”)括起來。 相鄰的映射用字符“,”(逗號和空格)分隔。 每個鍵值映射均表示為鍵,后跟等號(“ =”),后跟關聯值。 鍵和值通過String.valueOf(Object)轉換為字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.