2016-08-11 3 views
1

У меня есть большой проект с большим количеством зависимостей, упакованных как «jar-with-dependencies.jar». Я помещаю эту банку в папку jmeter/lib.jMeter custom jar import issue

Когда я пытаюсь запустить JMeter и открыть JMX файл я получаю неперехваченную ошибку исключения, как,

Uncaught Exception java.lang.NoSuchMethodError: com.thoughtworks.xstream.core.JV 
M.newReflectionProvider()Lcom/thoughtworks/xstream/converters/reflection/Reflect 
ionProvider;.See log file for details. 

Я планирую написать код BeanShell Java, который будет использовать функциональные возможности в пользовательском банке импортируется. Я импортирую банку правильно? Есть ли другой способ импортировать банку?

ответ

2

Этот класс содержится в xstream.jar, а JMeter уже имеет собственную версию xstream.jar (JMeter 2.13 и 3.0 включает в себя xstream-1.4.8.jar).

Теперь, если ваша Jar с зависимостями имеет другую версию xstream.jar, у вас будет 2 версии этого файла в папке lib. And that's not good:

поведение не определено, и только во время выполнения будет выбран один из двух классов. Кто выбирается, зависит от внутренней реализации загрузчика классов, нет способа узнать заранее.

Поэтому вам нужно удалить один из файлов. Какой из них сложный

  • Обычно сохранение более новой версии является более безопасным вариантом. Поэтому я бы начал с этого. Если это сработает - отлично.
  • Если это не сработает, попробуйте наоборот (хотя я подозреваю, что вы видите ошибку из старой версии этого пакета)
  • Если второй способ не работает, вам придется открыть код вашего пользовательского банку и обновить его для совместимости с JMeter (версия обновления xstream.jar будет такой же, как и JMeter, и обновить любой сломанный код). Или вы можете попробовать this solution.