- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 jmeter bean shell 采样器中执行时,我们收到上述错误提到过。
实际上代码在 Eclipse 中运行良好,但在 Jmeter 中实现时却无法运行。任何人都可以帮助我们解决这个问题吗?
import com.google.gson.*;
import com.google.gson.reflect.TypeToken;
import java.io.FileReader;
import java.lang.reflect.Type;
import java.util.*;
import java.util.Map.*;
import java.util.Set;
public class JsonComparator {
public static void main(String[] args) throws Exception {
JsonParser parser = new JsonParser();
try{
Gson g = new Gson();
JsonElement jsonElement1 = parser
.parse(new FileReader("E:\\InCites_UI\\trunk\\Tests\\Filters_ByPerson_People_PerfC.json"));
JsonElement jsonElement2 = parser
.parse(new FileReader("E:\\InCites_UI\\trunk\\Tests\\Filters_ByPerson_People_PerfA.json"));
System.out.println("Is the two JSON File Same: "+compareJson(jsonElement1, jsonElement2));
if(!compareJson(jsonElement1, jsonElement2)){
Type mapType = new TypeToken<Map<String, Object>>(){}.getType();
Map<String,Object> firstMap = g.fromJson(jsonElement1, mapType);
Map<String, Object> secondMap = g.fromJson(jsonElement2, mapType);
System.out.println(JsonComparator.mapDifference(firstMap, secondMap));
}
else{
System.out.println("The Two JSON Are SAME!!!!!!!!!!!!!!!");
}
}catch(Exception e1){
e1.printStackTrace();
}
}
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;
}
public static boolean compareJson(JsonElement json1, JsonElement json2) {
boolean isEqual = true;
ArrayList<Object> ls1 = new ArrayList<Object>();
ArrayList<Object> ls2 = new ArrayList<Object>();
// Check whether both jsonElement are not null
if (json1 != null && json2 != null) {
// Check whether both jsonElement are objects
if (json1.isJsonObject() && json2.isJsonObject()) {
Set<Entry<String, JsonElement>> ens1 = ((JsonObject) json1).entrySet();
Set<Entry<String, JsonElement>> ens2 = ((JsonObject) json2).entrySet();
JsonObject json2obj = (JsonObject) json2;
if (ens1 != null && ens2 != null && (ens2.size() == ens1.size())) {
// Iterate JSON Elements with Key values
for (Entry<String, JsonElement> en : ens1) {
isEqual = isEqual && compareJson(en.getValue(),json2obj.get(en.getKey()));
}
} else {
return false;
}
}
// Check whether both jsonElement are arrays
else if (json1.isJsonArray() && json2.isJsonArray()) {
JsonArray jarr1 = json1.getAsJsonArray();
JsonArray jarr2 = json2.getAsJsonArray();
if (jarr1.size() != jarr2.size()) {
return false;
} else {
int i = 0;
// Iterate JSON Array to JSON Elements
for (JsonElement je : jarr1) {
isEqual = isEqual && compareJson(je, jarr2.get(i));
i++;
}
if (isEqual) {
Object[] o1 = ls1.toArray();
Object[] o2 = ls2.toArray();
isEqual = Arrays.deepEquals(o1, o2);
}
}
}
// Check whether both jsonElement are null
else if (json1.isJsonNull() && json2.isJsonNull()) {
return true;
}
// Check whether both jsonElement are primitives
else if (json1.isJsonPrimitive() && json2.isJsonPrimitive()) {
ls1.add(json1);
ls2.add(json2);
}
} else if (json1 == null && json2 == null) {
return true;
} else {
return false;
}
return isEqual;
}
}
我们正在寻求有关此问题的帮助,是否有人能够使用此代码并尝试在 Jmeter 上工作?我们无法在 Jmeter 中实现。
实际上代码在 Eclipse 中运行良好,但在 Jmeter 中实现时却无法运行。
最佳答案
有 2 种 Beanshell 脚本故障排除技术:
将您的代码放入 try block 中像:
try {
//your code here
}
catch (Throwable ex) {
log.error("Beanshell failure", ex);
throw ex;
}
采用这种方法,您将在jmeter.log文件中获得更多信息的堆栈跟踪
一般来说,我建议切换到 JSR223 Sampler和 Groovy语言。 Groovy has built-in JSON support与 Beanshell 相比,性能要好得多,请参阅 Groovy Is the New Black文章了解详细信息。
今后不要将代码作为图像发布,我认为不会有爱好者会深入研究这一点。
关于java - 响应消息 : org. apache.jorphan.util.JMeterException:调用 bsh 方法时出错:eval null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43362616/
我创建了一个 Maven 项目并尝试使用 Jenkins 运行它。 下面是我的 Jenkins 错误:- 我正在学习如何在 Jenkins 中运行 Maven 项目,但是 Jenkins 给了我这个错
在 Eclipse 中,当我处理编码部分时,我常常按 Ctrl + Shift + O 来删除未使用的导入语句。 这很好用。但有时它会自动添加一行,如下所示。 import bsh.This; 这一行
我们可以使用vars.put来添加数组列表的成员吗? 下面是我的代码,它在第 10 行第 25 列抛出异常错误是: Error invoking bsh method: eval In file: i
我已经配置了我的系统并尝试运行我的 appium 代码并遇到以下错误。所以请帮忙 java.lang.NoClassDefFoundError: bsh/EvalError at org.te
我有一个 .jmx,其中有一个 .bsh 正在被调用,它在那里失败并出现以下错误:我需要进行故障排除并找出根本原因。在这方面的任何指示都会很棒。我从 Java 应用程序中调用了这个 .jmx,但是在从
当我尝试在jmeter中执行以下代码时: import org.json.JSONArray; import org.json.JSONObject; String jsonString = prev
我在 JMeter 中遇到问题,我收到此错误 2014/08/14 14:13:26 ERROR - jmeter.util.BeanShellInterpreter: Error invoking
在 Eclipse 中运行一组代码时,结果不会显示在 Eclipse 控制台窗口中...而是打开“Bhs Console”窗口并显示以下内容: bsh % BeanShell 1.3.0 - 作者:P
这是我试图在 beanshell sampler 中执行的代码: import java.lang.*; import java.util.*; String name_lead = vars.get
在 jmeter bean shell 采样器中执行时,我们收到上述错误提到过。 实际上代码在 Eclipse 中运行良好,但在 Jmeter 中实现时却无法运行。任何人都可以帮助我们解决这个问题吗?
当我运行将 Beanshell 后处理器作为采样器子处理器的 jmeter 脚本时出现以下错误。 ERROR - jmeter.util.BeanShellInterpreter: Error inv
我收到错误消息 Error invoking bsh method: eval Sourced file: inline evaluation of: ``import java.util.Array
我是一名优秀的程序员,十分优秀!