JMeter GUI - 使用 NewDriver 执行无法查看 Function Helper 对话框

JMeter GUI - execute using NewDriver failed to view Function Helper Dialog

我尝试在 JMeter 中测试一个新功能。

我下载 JMeter 3.3 代码并添加插件,包括 JMeterPluginsCMD

我还下载了 jmeter-plugins-extras-1.4.0.jar 和 HttpSimpleTableControlGui class

我执行打开 JMeter GUI 的 NewDriver,我尝试打开选项 -> 功能助手对话框,但我没有任何功能

日志:

2017-11-13 16:16:56,661 WARN o.a.j.g.u.MenuFactory: Could not instantiate class: org.jmeterplugins.protocol.http.control.gui.HttpSimpleTableControlGui
java.lang.ClassNotFoundException: org.jmeterplugins.protocol.http.control.gui.HttpSimpleTableControlGui
    at java.net.URLClassLoader.run(Unknown Source) ~[?:1.8.0_25]
    at java.net.URLClassLoader.run(Unknown Source) ~[?:1.8.0_25]
    at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_25]
    at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_25]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_25]
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) ~[?:1.8.0_25]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_25]
    at java.lang.Class.forName0(Native Method) ~[?:1.8.0_25]
    at java.lang.Class.forName(Unknown Source) ~[?:1.8.0_25]
    at org.apache.jmeter.gui.util.MenuFactory.initializeMenus(MenuFactory.java:499) [core/:?]
    at org.apache.jmeter.gui.util.MenuFactory.<clinit>(MenuFactory.java:169) [core/:?]
    at org.apache.jmeter.control.gui.WorkBenchGui.createPopupMenu(WorkBenchGui.java:119) [core/:?]
    at org.apache.jmeter.gui.tree.JMeterTreeNode.createPopupMenu(JMeterTreeNode.java:159) [core/:?]
    at org.apache.jmeter.gui.action.EditCommand.doAction(EditCommand.java:46) [core/:?]
    at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:88) [core/:?]
    at org.apache.jmeter.gui.action.ActionRouter.lambda[=10=](ActionRouter.java:70) [core/:?]
    at org.apache.jmeter.gui.action.ActionRouter$$Lambda/1433208870.run(Unknown Source) [core/:?]
    at java.awt.event.InvocationEvent.dispatch(Unknown Source) [?:1.8.0_25]
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) [?:1.8.0_25]
    at java.awt.EventQueue.access0(Unknown Source) [?:1.8.0_25]
    at java.awt.EventQueue.run(Unknown Source) [?:1.8.0_25]
    at java.awt.EventQueue.run(Unknown Source) [?:1.8.0_25]
    at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_25]
    at java.security.ProtectionDomain.doIntersectionPrivilege(Unknown Source) [?:1.8.0_25]
    at java.awt.EventQueue.dispatchEvent(Unknown Source) [?:1.8.0_25]
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) [?:1.8.0_25]
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) [?:1.8.0_25]
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) [?:1.8.0_25]
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_25]
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_25]
    at java.awt.EventDispatchThread.run(Unknown Source) [?:1.8.0_25]
2017-11-13 16:16:59,670 ERROR o.a.j.g.a.ActionRouter: Error processing org.apache.jmeter.gui.action.CreateFunctionDialog@45e37a7e
java.lang.NullPointerException: null
    at org.apache.jmeter.functions.gui.FunctionHelper.initParameterPanel(FunctionHelper.java:165) ~[core/:?]
    at org.apache.jmeter.functions.gui.FunctionHelper.setVisible(FunctionHelper.java:228) ~[core/:?]
    at org.apache.jmeter.gui.action.CreateFunctionDialog.doAction(CreateFunctionDialog.java:50) ~[core/:?]
    at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:88) [core/:?]
    at org.apache.jmeter.gui.action.ActionRouter.lambda[=10=](ActionRouter.java:70) [core/:?]
    at org.apache.jmeter.gui.action.ActionRouter$$Lambda/1433208870.run(Unknown Source) [core/:?]
    at java.awt.event.InvocationEvent.dispatch(Unknown Source) [?:1.8.0_25]
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) [?:1.8.0_25]
    at java.awt.EventQueue.access0(Unknown Source) [?:1.8.0_25]
    at java.awt.EventQueue.run(Unknown Source) [?:1.8.0_25]
    at java.awt.EventQueue.run(Unknown Source) [?:1.8.0_25]
    at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_25]
    at java.security.ProtectionDomain.doIntersectionPrivilege(Unknown Source) [?:1.8.0_25]
    at java.awt.EventQueue.dispatchEvent(Unknown Source) [?:1.8.0_25]
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) [?:1.8.0_25]
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) [?:1.8.0_25]
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) [?:1.8.0_25]
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_25]
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_25]
    at java.awt.EventDispatchThread.run(Unknown Source) [?:1.8.0_25]
  1. 安装 JMeter 插件并使它们保持最新的推荐方法是使用 JMeter Plugins Manager
  2. 我确认全新的 JMeter 3.3 和 HTTP Simple Table Server work fine together without any issues with The Function Helper Dialog

所以我的期望是:

  • 你的安装有问题,你应该有:

    • jmeter-plugins-table-server-2.2.jar 在 "lib/ext" 文件夹中
    • jmeter-plugins-cmn-jmeter-0.4.jar 在 "lib" 文件夹中
    • 需要重新启动 JMeter 才能拾取任何 .jars
  • (最有可能)您的函数实现不稳定。如果是这种情况,您将需要连同问题一起提供您的函数代码。

似乎调用 JMeter GUI 的正确(或可能)方式是

 ant run_gui

Function Helper 处理了我的更改