2016-09-24 2 views
0

У меня проблема при использовании препроцессора Jmeter BeanShell. Сценарий вызывает банки, которые я поместил в каталог «D: \ Software \ apache-jmeter-3.0 \ lib \ ext». enter image description hereJmeter Типированное объявление переменной: Invoice метода

вот мой BeanShell код:

import com.evergrande.api.test.JsonClientUtil; 
import com.evergrande.common.utils.JsonUtil; 
import com.fasterxml.jackson.databind.node.ObjectNode; 

JsonClientUtil jcu=new JsonClientUtil(); 
ObjectNode node = JsonUtil.createObjectNode();//when I try to use the method in JsonUtil(Class),it came out error 

Ошибка:

2016/09/24 22:48:06 ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import com.evergrande.api.test.JsonClientUtil; import com.evergrande.common.util . . . '' : Typed variable declaration : Method Invocation JsonUtil.createObjectNode 
2016/09/24 22:48:06 WARN - jmeter.modifiers.BeanShellPreProcessor: Problem in BeanShell script org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import com.evergrande.api.test.JsonClientUtil; import com.evergrande.common.util . . . '' : Typed variable declaration : Method Invocation JsonUtil.createObjectNode 

я могу ссылаться на "createObjectNode" метод в моей коде Java. Итак, как я могу исправить эту проблему? Спасибо вам всем.

ответ

0
  1. Не ставьте банки в папку lib/ext, она должна использоваться для основных компонентов и плагинов JMeter только. Поместите ваши библиотеки .jar в папку «lib» в другом месте, они просто должны быть на JMeter's Claspath. Альтернативный вариант заключается в использовании Add directory or jar to classpath опции на Test Plan уровне

    extra jars to classpath

  2. JMeter требуется перезагрузка, чтобы выбрать банки вверх.
  3. Вы можете получить более читаемое сообщение об ошибке Beanshell окружив код с try/catch блоком как

    import com.evergrande.api.test.JsonClientUtil; 
    import com.evergrande.common.utils.JsonUtil; 
    import com.fasterxml.jackson.databind.node.ObjectNode; 
    
    try { 
        JsonClientUtil jcu=new JsonClientUtil(); 
        ObjectNode node = JsonUtil.createObjectNode(); 
    } 
    catch (Throwable ex) { 
        log.error("Beanshell failure: ", ex); 
        throw ex; 
    } 
    

    Так что, если ваш скрипт не вы сможете увидеть детали StackTrace в jmeter.log файла. Еще один подход к сбою в работе скрипта Beanshell заключается в добавлении команды debug(); к началу вашего скрипта. Он будет вызывать подробный вывод на консоль. Обратитесь к статье How to Debug your Apache JMeter Script за дополнительной информацией о методах отладки JMeter.

+0

Спасибо! Я решил эту проблему. Это из-за отсутствия пакета Jar. – TavisD