Jmeter не может прочитать пользовательские зависимости JAR - PullRequest
0 голосов
/ 20 ноября 2019

Я написал приложение Maven, которое хочу использовать в своем скрипте Jmeter BeanShell. Приложение Maven использует Google Guice 4.2.2 для внедрения зависимостей и в конце вызывает API (код должен выполнить некоторые другие операции перед вызовом API, и поэтому я не использую плагин JMETER). Я создаю Uber JAR (FAT JAR) с maven-shade-plugin. Когда я запускаю Jar из командной строки, приложение запускается успешно!

Однако, когда я загружаю JAR в свой план тестирования Jmeter и вызываю основной метод приложения в Jmeter BeanShell, я получаю следующую ошибку:

java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
    at com.google.inject.Key.ensureRetainedAtRuntime(Key.java:341) ~[load-testing.jar:?]
    .
    .
    .

Теперь многие другие темы упоминали, что это может быть из-за более старой версии Google Guiva (20.x старше), но из дерева зависимостей я вижу, что версия Guava 25.1-android, и я могу запустить свойJAR успешно из командной строки !!

Также я перечисляю классы в Uber JAR командой runnung jar -tf, и я вижу, что класс com.google.common.base.Preconditions есть.

Буду ли я признателен, если кто-нибудь сможет затенить свет в этом вопросе и поможет мне решить эту проблему?

1 Ответ

0 голосов
/ 25 ноября 2019

Сама Beanshell может быть проблемой, , так как в JMeter 3.1 рекомендуется использовать JSR223 Test Elements и язык Groovy для сценариев , причины в:

  • Groovy - это больше«современный» язык, который поддерживает все современные функции Java, в то время как с Beanshell вы застряли на уровне языка Java 1.5 (без лямбда-выражений, без шаблонов, без мульти-перехвата и т. д.)
  • Groovy производительностьнамного лучше по сравнению с Beanshell, потому что движок Grooovy реализует интерфейс Compilable и способен кэшировать скомпилированные скрипты, обеспечивая производительность, очень близкую к нативному Java-коду
  • Groovy предоставляет множество улучшений поверх стандартного Java SDK

Ознакомьтесь с Apache Groovy - почему и как его использовать статья для более подробной информации.

...