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が配置されている状態でJMeterをGUIモードで起動する。
$pwd /hogehoge/apache-jmeter-5.4/bin $./jmeter
この状態で、実行対象のjmxファイルを開くと、plugins-managerが自動的に必要なプラグインを判別してくれるので、そのままインストールすれば大丈夫。
これで必要なものが全て揃ったので、プラグインの揃った状態のJmeterをディレクトリごとサーバに送って、それを実行することで解決できた。