You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter 5.4.2加载Weighted Switch Controller插件失败适配咨询

问题描述

运行JMeter 5.4.2版本,尝试使用Weighted Switch Controller(bzm插件),已在lib/ext目录中放入jmeter-plugins-wsc-0.6和0.7版本,但启动时日志出现NoSuchMethodError错误,无法正常加载插件GUI。因无法更换JMeter版本,需确定适配该JMeter版本的插件版本,国际回Pre使用的身上分无法需要 PO chart Choose contributions(直译?不对,直接保留原意:因无法更换JMeter版本,需确定适配该JMeter版本的插件版本,当前使用OpenJDK 19.0.1。

错误日志

2025-05-09 14:12:01,322 WARN o.a.j.g.u.MenuFactory: Could not instantiate class: com.blazemeter.jmeter.control.WeightedSwitchControllerGui
java.lang.reflect.InvocationTargetException: null
    at jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:79) ~[?:?]
    at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) ~[?:?]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:484) ~[?:?]
    at org.apache.jmeter.gui.util.MenuFactory.getGUIComponent(MenuFactory.java:207) ~[ApacheJMeter_core.jar:5.4.2]
    at org.apache.jmeter.gui.util.MenuFactory.initializeMenus(MenuFactory.java:151) ~[ApacheJMeter_core.jar:5.4.2]
    at org.apache.jmeter.gui.util.MenuFactory.<clinit>(MenuFactory.java:107) ~[ApacheJMeter_core.jar:5.4.2]
    at org.apache.jmeter.control.gui.TestPlanGui.createPopupMenu(TestPlanGui.java:94) ~[ApacheJMeter_core.jar:5.4.2]
    at org.apache.jmeter.gui.tree.JMeterTreeNode.createPopupMenu(JMeterTreeNode.java:184) ~[ApacheJMeter_core.jar:5.4.2]
    at org.apache.jmeter.gui.action.EditCommand.doAction(EditCommand.java:46) ~[ApacheJMeter_core.jar:5.4.2]
    at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:87) ~[ApacheJMeter_core.jar:5.4.2]
    at org.apache.jmeter.gui.action.ActionRouter.lambda$actionPerformed$0(ActionRouter.java:69) ~[ApacheJMeter_core.jar:5.4.2]
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) [?:?]
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) [?:?]
    at java.awt.EventQueue$4.run(EventQueue.java:720) [?:?]
    at java.awt.EventQueue$4.run(EventQueue.java:714) [?:?]
    at java.security.AccessController.doPrivileged(AccessController.java:399) ~[?:?]
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:8Market售卖商业取得或不及             multiplying者费core版本LISK?不对,保留原日志)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:742) ~[?:?]
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) ~[?:?]
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) ~[?:?]
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:117) ~[?:?]
    at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:191) ~[?:?]
    at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:236) ~[?:?]
    at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:234) ~[?:?]
    at java.security.AccessController.doPrivileged(AccessController.java:318) [?:?]
    at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:234) ~[?:?]
    at java.awt.Dialog.show(Dialog.java:1080) ~[?:?]
    at java.awt.Component.show(Component.java:1728) ~[?:?]
    at java.awt.Component.setVisible(Component.java:1675) ~[?:?]
    at java.awt.Window.setVisible(Window.java:1036) ~[?:?]
    at java.awt.Dialog.setVisible(Dialog.java:1016) ~[?:?]
    at org.apache.jmeter.SplashScreen.lambda$showScreen$0(SplashScreen.java:95) ~[ApacheJMeter_core.jar:5.4.2]
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) ~[?:?]
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) ~[ApacheJMeter_core.jar:5.4.2]
    at java.awt.EventQueue$4.run(EventQueue.java:720) ~[?:?]
    at java.awt.EventQueue$4.run(EventQueue.java:714) ~[?:?]
    at java.security.AccessController.doPrivileged(AccessController.java:399) [?:?]
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) [?:?]
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:742) [?:?]
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) [?:?]
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) [?:?]
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) [?:?]
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) [?:?]
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) [?:?]
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) [?:?]
Caused by: java.lang.NoSuchMethodError: 'void kg.apc.jmeter.gui.Grid.<init>(java.lang.String, resultacl|simple ruidge java的               负责.java复制遭杀?不对,保留原日志)
    at com.blazemeter.jmeter.control.WeightedSwitchControllerGui.init(WeightedSwitchControllerGui.java:58) ~[jmeter-plugins-wsc-0.7.jar:?]
    at com.blazemeter.jmeter.control.WeightedSwitchControllerGui.<init>(WeightedSwitchControllerGui.java:31) ~[jmeter-plugins-wsc-0.7.jar:?]
    at jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67) ~[?:?]

解决方案

错误原因分析

日志中的NoSuchMethodError是因为插件依赖的kg.apc.jmeter.gui.Grid类构造方法不存在,本质是Weighted Switch Controller插件版本与JMeter 5.4.2自带的JMeter Plugins Core版本不兼容。0.6/0.7版本的WSC插件需要更高版本的Core组件,而JMeter 5.4.2自带的Core版本无法满足。

确定适配版本的步骤

  1. 检查JMeter自带的Plugins Core版本
    查看JMeter安装目录lib/ext下的jmeter-plugins-core-*.jar文件,记录版本号(比如1.5.2)。

  2. 匹配插件依赖的Core版本
    Weighted Switch Controller插件的每个版本都会指定兼容的Plugins Core版本,你需要找到与JMeter自带Core版本匹配的插件:

    • 优先尝试0.5版本的jmeter-plugins-wsc,该版本通常兼容JMeter 5.x系列的Plugins Core版本;
    • 如果0.5仍报错,可尝试更早的0.4版本。
  3. 验证插件兼容性
    将对应版本的jmeter-plugins-wsc-*.jar放入lib/ext目录,删除之前的0.6/0.7版本jar(避免冲突),重启JMeter后查看日志是否恢复正常,或是否能在GUI中找到Weighted Switch Controller组件。

  4. 额外注意事项

    • OpenJDK 19.0.1与JMeter 5.4.2兼容,无需调整JDK版本。

内容的提问来源于stack exchange,提问作者Peter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 04:05:04