簡體   English   中英

在類'org.apache.log.Logger'中找不到方法info(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM