阅读本文大约需要3分钟
在使用自定义的Java Sampler,总是莫名奇妙地报找不到类——ClaasNotFound Exception,但实际上该类是存在的。究其原因,是因为不知道哪些jar包应该放在哪个目录。一般情况下,JMeter有2个默认的jar包路径:%JMETER_HOME%lib和%JMETER_HOME%lib/ext;有时候为了更有序地管理自定义的jar包,往往希望能够在%JMETER_HOME%lib目录下创建自定义的文件夹来分类存在jar包。但也因为没有真正理解哪个路径应该存放哪种类型的jar包,导致执行脚本过程中,总是猝不及防地报错。
这里先介绍一下, 扩展jar包 与 依赖jar包 。
扩展jar包(也称“协议测试jar包”):自己开发的脚本(jar文件),需要在Java Sampler等取样器中被识别的Java代码 ,包括组件和插件;默认情况,放在%JMETER_HOME%lib/ext 目录下。
注:脚本依赖的jar不要放在这里!
依赖jar包:脚本依赖的jar包或者其他jar(如JDBC,JMS实现类或者任何其他支持库);默认情况,放在%JMETER_HOME%lib 目录下。注:%JMETER_HOME%lib 目录下本身有很多jar包,拷贝脚本依赖的jar时一定要小心,如果有重复的jar包但版本不一致,一般情况下,保留高版本的jar,删除抵版本的jar即可(java一般需要遵从高版本向低版本兼容)。
如果不想将扩展jar放在lib/ext 目录下,可以在jmeter.properties配置文件中,配置search_paths。
操作步骤:打开%JMETER_HOME%/bin/jmeter.properties文件,搜索“search_paths ”,去掉注释符号“#”,设置自定义的目录。如search_paths=..lib/osp;..lib/testcase。
同理,如果不想将依赖jar放在lib目录下,可以在jmeter.properties配置文件中,配置user.classpath或者 plugin_dependency_paths。操作步骤同上。
官方解释,可参考官方白皮书 JMeter Classpath 。