Jmeterで CannotResolveClassException: kg.apc.jmeter.timers.VariableThroughputTimer が発生する

環境

事象

サーバ上に新しくJMeterをインストールし、ローカルで作成したjmxファイルをサーバ上で動かしたところ以下のエラーメッセージがでた。

 Detail:com.thoughtworks.xstream.converters.ConversionException: 
---- Debugging information ----
cause-exception     : com.thoughtworks.xstream.converters.ConversionException
cause-message       : 
first-jmeter-class  : org.apache.jmeter.save.converters.HashTreeConverter.unmarshal(HashTreeConverter.java:66)
class               : org.apache.jmeter.save.ScriptWrapper
required-type       : org.apache.jmeter.save.ScriptWrapper
converter-type      : org.apache.jmeter.save.ScriptWrapperConverter
path                : /jmeterTestPlan/hashTree/hashTree/hashTree[2]/hashTree/kg.apc.jmeter.timers.VariableThroughputTimer
line number         : 56
version             : 5.4
-------------------------------

原因

テストのシナリオ作成のために、Throughput Shaping Timerを使用していたが、それを動かすためのプラグインが用意されていなかった。

JMeterで何らかのプラグインを利用するためにはjmeter-plugins-managerを使う必要がある。 また、以下の作業はサーバ上ではなくローカル環境で行った方が簡単そう。

1. plugins-manager のJARファイルを用意

ここからダウンロード jmeter-plugins.org

JARを以下のディレクトリに配置する。

apache-jmeter-5.4/lib/ext/

2. プラグインのインストール

jmeter-plugins-managerは自動的に必要なプラグインをインストールしてくれるが、インストールにはGUIモードでJMeterを一度起動する必要がある。

まずは、JARが配置されている状態でJMeterGUIモードで起動する。

$pwd 
/hogehoge/apache-jmeter-5.4/bin

$./jmeter

この状態で、実行対象のjmxファイルを開くと、plugins-managerが自動的に必要なプラグインを判別してくれるので、そのままインストールすれば大丈夫。

f:id:teriyaki398:20210113094503p:plain:w350

これで必要なものが全て揃ったので、プラグインの揃った状態のJmeterディレクトリごとサーバに送って、それを実行することで解決できた。