【问题标题】:Beanshell PostProcessor Error: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import java.util.Arrays; import java.util.List;Beanshell PostProcessor 错误:调用 bsh 方法时出错:eval 源文件:内联评估:``import java.util.Arrays;导入 java.util.List;
【发布时间】:2016-12-15 18:15:01
【问题描述】:

我收到错误消息

调用 bsh 方法时出错:eval 源文件:内联评估: ``导入 java.util.Arrays;导入 java.util.List;进口 java.util.concurrent.Time 。 . . '' :类型化变量声明: 方法调用错误:静态方法创建(java.lang.String) 在类'com.couchbase.client.java.CouchbaseCluster'中找不到

当我使用 Beanshell 后处理器执行 jmeter 脚本时。关于我为什么会看到此错误的任何想法?

下面是示例代码: 导入 java.util.Arrays;

import java.util.List;
import java.util.concurrent.TimeUnit;

import com.couchbase.client.java.Bucket;
import com.couchbase.client.java.Cluster;
import com.couchbase.client.java.CouchbaseCluster;
import com.couchbase.client.java.document.Document;
import com.couchbase.client.java.document.JsonDocument;
import com.couchbase.client.java.document.json.JsonObject;

Cluster cluster = CouchbaseCluster.create("dev-int-couchbase1.aeg.cloud");
Bucket bucket = cluster.openBucket("source-image ",100, TimeUnit.MINUTES);
Document<JsonObject> loadedFromDoc = bucket.get("0292ofcfh4516");
if(loadedFromDoc == null)
    return "Document Not found";

bucket.remove(“0292ofcfh4516");
log.info("In bean shell processor");
System.out.println("In bean shell processor");
cluster.disconnect();
return "Document Removed";

【问题讨论】:

  • 什么是 JMeter 版本?你把couchbase-client-java jars 放在哪里了?在/lib 文件夹中?所有库都需要什么?
  • 我正在使用 2.11 ,是的。我将它们保存在 lib 文件夹中
  • 请告诉我所有库需要什么以及下载它们的链接
  • 你需要两个 couchbase jar 和一个 rxjava

标签: jmeter


【解决方案1】:

建议不要使用create(String... varargs) 方法,而是使用create(List&lt;String&gt; nodes) 方法。

替换以下代码

Cluster cluster = CouchbaseCluster.create("dev-int-couchbase1.aeg.cloud");

与:

nodes = new ArrayList();
nodes.add("dev-int-couchbase1.aeg.cloud");
Cluster cluster = CouchbaseCluster.create(nodes);

注意:我不确定如何解决与varargs 相关的问题,因此建议另一个。我尝试了建议的方法here,但不适用于varargs

参考:

  1. http://docs.couchbase.com/sdk-api/couchbase-java-client-2.0.0/index.html?com/couchbase/client/java/CouchbaseCluster.html

我建议使用JSR223 Post Processor 而不是BeanShell postprocessor。只需将代码从BeanShell 复制粘贴到JSR223 并在JSR223 post processor 中的script language 下拉菜单下选择Java 语言。

这为调试提供了更大的灵活性(在日志中打印错误/异常的完整堆栈跟踪)。


来到错误,它说Static method create( java.lang.String ) not found in class'com.couchbase.client.java.CouchbaseCluster。我查看了官方文档here,上面说有一个create 方法采用String Varargs。我不确定这是否会导致问题。所以,在 JSR223 PostProcessor 中试一试并调试问题。

参考资料:

  1. https://www.blazemeter.com/blog/beanshell-vs-jsr223-vs-java-jmeter-scripting-its-performance

【讨论】:

  • @kmm,更新了我的答案。尝试使用 CouchbaseCluster 类中也提供的 create(List&lt;String&gt; nodes) 方法。这种方法对我有用。
  • 谢谢你。我使用了 JSR223 预处理器并根据您的 cmets 更新了代码。
  • 在下面找到错误消息:jmeter.modifiers.JSR223PreProcessor:JSR223 脚本 javax.script.ScriptException 中的问题:在文件中:内联评估:import java.util.Arrays; import java.util.List; import java.util.concurrent.Time . . . '' Encountered "=" at line 16, column 36. in inline evaluation of: import java.util.Arrays;导入 java.util.List;导入 java.util.concurrent.Time 。 . . '' 在第 16 行
  • nodes = new ArrayList();节点.add("dev-int-couchbase1.aeg.cloud");集群集群 = CouchbaseCluster.create(nodes); Bucket bucket = cluster.openBucket("source-image",100, TimeUnit.MINUTES); Document loadedFromDoc = bucket.get("0292f666e15eut"); if(loadedFromDoc == null) return "找不到文档"; bucket.remove(“0292f666e15eut”); cluster.disconnect(); return "文档已删除";
  • 尝试使用 beanshell 后处理器本身回答代码并告诉我。我签入了 beanshell,我正在为我工​​作。
猜你喜欢
  • 1970-01-01
  • 2016-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多