Jmeter无法正确使用Junit(无法初始化类org.apache.Jmeter.gui.util.MenuFactory)
我试图使用JMeter进行一些成本测试,但是我的计划是使用我们当前的API单元测试套件作为成本测试计划,因为许多测试都模拟用户流。话虽如此,我在JMeter方面遇到了一些问题。我应该在/lib/junit文件夹中有一个包含单元测试的jar,但是当我启动JMeter时,编辑选项卡在mac上没有任何项目,根据我的研究,这个问题在windows上产生了一个灰色的编辑按钮,我不能右键单击任何对象,junit采样器也没有出现在测试计划中。以下是日志中的数据:Jmeter无法正确使用Junit(无法初始化类org.apache.Jmeter.gui.util.MenuFactory),junit,jmeter,jmeter-plugins,Junit,Jmeter,Jmeter Plugins,我试图使用JMeter进行一些成本测试,但是我的计划是使用我们当前的API单元测试套件作为成本测试计划,因为许多测试都模拟用户流。话虽如此,我在JMeter方面遇到了一些问题。我应该在/lib/junit文件夹中有一个包含单元测试的jar,但是当我启动JMeter时,编辑选项卡在mac上没有任何项目,根据我的研究,这个问题在windows上产生了一个灰色的编辑按钮,我不能右键单击任何对象,junit采样器也没有出现在测试计划中。以下是日志中的数据: 2016/07/08 13:51:33 WAR
2016/07/08 13:51:33 WARN - jmeter.gui.util.MenuFactory: Missing jar? Could not create kg.apc.jmeter.config.redis.RedisDataSet. java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool$Config
2016/07/08 13:51:33 INFO - jmeter.util.BSFTestElement: Registering JMeter version of JavaScript engine as work-round for BSF-22
2016/07/08 13:51:33 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/html is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2016/07/08 13:51:33 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for application/xhtml+xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2016/07/08 13:51:33 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for application/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2016/07/08 13:51:33 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2016/07/08 13:51:33 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/vnd.wap.wml is org.apache.jmeter.protocol.http.parser.RegexpHTMLParser
2016/07/08 13:51:33 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/css is org.apache.jmeter.protocol.http.parser.CssParser
2016/07/08 13:51:33 INFO - jorphan.exec.KeyToolUtils: keytool found at 'keytool'
2016/07/08 13:51:33 INFO - jmeter.protocol.http.proxy.ProxyControl: HTTP(S) Test Script Recorder SSL Proxy will use keys that support embedded 3rd party resources in file /Users/tester/apache-jmeter-3.0/bin/proxyserver.jks
2016/07/08 13:51:34 WARN - jmeter.gui.util.MenuFactory: Could not instantiate org.apache.jmeter.protocol.java.control.gui.JUnitTestSamplerGui java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.jorphan.reflect.ClassFinder.isChildOf(ClassFinder.java:377)
at org.apache.jorphan.reflect.ClassFinder.access$000(ClassFinder.java:47)
at org.apache.jorphan.reflect.ClassFinder$ExtendsClassFilter.accept(ClassFinder.java:92)
at org.apache.jorphan.reflect.ClassFinder.findClassesInOnePath(ClassFinder.java:441)
at org.apache.jorphan.reflect.ClassFinder.findClasses(ClassFinder.java:289)
at org.apache.jorphan.reflect.ClassFinder.findClassesThatExtend(ClassFinder.java:264)
at org.apache.jorphan.reflect.ClassFinder.findClassesThatExtend(ClassFinder.java:196)
at org.apache.jorphan.reflect.ClassFinder.findClassesThatExtend(ClassFinder.java:178)
at org.apache.jorphan.reflect.ClassFinder.findClassesThatExtend(ClassFinder.java:140)
at org.apache.jmeter.protocol.java.control.gui.JUnitTestSamplerGui.setupClasslist(JUnitTestSamplerGui.java:181)
at org.apache.jmeter.protocol.java.control.gui.JUnitTestSamplerGui.createClassPanel(JUnitTestSamplerGui.java:212)
at org.apache.jmeter.protocol.java.control.gui.JUnitTestSamplerGui.init(JUnitTestSamplerGui.java:167)
at org.apache.jmeter.protocol.java.control.gui.JUnitTestSamplerGui.<init>(JUnitTestSamplerGui.java:147)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at org.apache.jmeter.gui.util.MenuFactory.initializeMenus(MenuFactory.java:492)
at org.apache.jmeter.gui.util.MenuFactory.<clinit>(MenuFactory.java:160)
at org.apache.jmeter.control.gui.TestPlanGui.createPopupMenu(TestPlanGui.java:93)
at org.apache.jmeter.gui.tree.JMeterTreeNode.createPopupMenu(JMeterTreeNode.java:156)
at org.apache.jmeter.gui.action.EditCommand.doAction(EditCommand.java:47)
at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:80)
at org.apache.jmeter.gui.action.ActionRouter.access$000(ActionRouter.java:40)
at org.apache.jmeter.gui.action.ActionRouter$1.run(ActionRouter.java:62)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
2016/07/08 13:51:34 ERROR - jmeter.gui.util.MenuFactory: java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.jorphan.reflect.ClassFinder.isChildOf(ClassFinder.java:377)
at org.apache.jorphan.reflect.ClassFinder.access$000(ClassFinder.java:47)
at org.apache.jorphan.reflect.ClassFinder$ExtendsClassFilter.accept(ClassFinder.java:92)
at org.apache.jorphan.reflect.ClassFinder.findClassesInOnePath(ClassFinder.java:441)
at org.apache.jorphan.reflect.ClassFinder.findClasses(ClassFinder.java:289)
at org.apache.jorphan.reflect.ClassFinder.findClassesThatExtend(ClassFinder.java:264)
at org.apache.jorphan.reflect.ClassFinder.findClassesThatExtend(ClassFinder.java:196)
at org.apache.jorphan.reflect.ClassFinder.findClassesThatExtend(ClassFinder.java:178)
at org.apache.jorphan.reflect.ClassFinder.findClassesThatExtend(ClassFinder.java:140)
at org.apache.jmeter.protocol.java.control.gui.JUnitTestSamplerGui.setupClasslist(JUnitTestSamplerGui.java:181)
at org.apache.jmeter.protocol.java.control.gui.JUnitTestSamplerGui.createClassPanel(JUnitTestSamplerGui.java:212)
at org.apache.jmeter.protocol.java.control.gui.JUnitTestSamplerGui.init(JUnitTestSamplerGui.java:167)
at org.apache.jmeter.protocol.java.control.gui.JUnitTestSamplerGui.<init>(JUnitTestSamplerGui.java:147)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at org.apache.jmeter.gui.util.MenuFactory.initializeMenus(MenuFactory.java:492)
at org.apache.jmeter.gui.util.MenuFactory.<clinit>(MenuFactory.java:160)
at org.apache.jmeter.control.gui.TestPlanGui.createPopupMenu(TestPlanGui.java:93)
at org.apache.jmeter.gui.tree.JMeterTreeNode.createPopupMenu(JMeterTreeNode.java:156)
at org.apache.jmeter.gui.action.EditCommand.doAction(EditCommand.java:47)
at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:80)
at org.apache.jmeter.gui.action.ActionRouter.access$000(ActionRouter.java:40)
at org.apache.jmeter.gui.action.ActionRouter$1.run(ActionRouter.java:62)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
2016/07/08 13:51:34 ERROR - jmeter.JMeter: Uncaught exception: java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.jorphan.reflect.ClassFinder.isChildOf(ClassFinder.java:377)
at org.apache.jorphan.reflect.ClassFinder.access$000(ClassFinder.java:47)
at org.apache.jorphan.reflect.ClassFinder$ExtendsClassFilter.accept(ClassFinder.java:92)
at org.apache.jorphan.reflect.ClassFinder.findClassesInOnePath(ClassFinder.java:441)
at org.apache.jorphan.reflect.ClassFinder.findClasses(ClassFinder.java:289)
at org.apache.jorphan.reflect.ClassFinder.findClassesThatExtend(ClassFinder.java:264)
at org.apache.jorphan.reflect.ClassFinder.findClassesThatExtend(ClassFinder.java:196)
at org.apache.jorphan.reflect.ClassFinder.findClassesThatExtend(ClassFinder.java:178)
at org.apache.jorphan.reflect.ClassFinder.findClassesThatExtend(ClassFinder.java:140)
at org.apache.jmeter.protocol.java.control.gui.JUnitTestSamplerGui.setupClasslist(JUnitTestSamplerGui.java:181)
at org.apache.jmeter.protocol.java.control.gui.JUnitTestSamplerGui.createClassPanel(JUnitTestSamplerGui.java:212)
at org.apache.jmeter.protocol.java.control.gui.JUnitTestSamplerGui.init(JUnitTestSamplerGui.java:167)
at org.apache.jmeter.protocol.java.control.gui.JUnitTestSamplerGui.<init>(JUnitTestSamplerGui.java:147)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at org.apache.jmeter.gui.util.MenuFactory.initializeMenus(MenuFactory.java:492)
at org.apache.jmeter.gui.util.MenuFactory.<clinit>(MenuFactory.java:160)
at org.apache.jmeter.control.gui.TestPlanGui.createPopupMenu(TestPlanGui.java:93)
at org.apache.jmeter.gui.tree.JMeterTreeNode.createPopupMenu(JMeterTreeNode.java:156)
at org.apache.jmeter.gui.action.EditCommand.doAction(EditCommand.java:47)
at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:80)
at org.apache.jmeter.gui.action.ActionRouter.access$000(ActionRouter.java:40)
at org.apache.jmeter.gui.action.ActionRouter$1.run(ActionRouter.java:62)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
2016/07/08 13:51:35 ERROR - jmeter.JMeter: Uncaught exception: java.lang.NoClassDefFoundError: Could not initialize class org.apache.jmeter.gui.util.MenuFactory
at org.apache.jmeter.control.gui.TestPlanGui.createPopupMenu(TestPlanGui.java:93)
at org.apache.jmeter.gui.tree.JMeterTreeNode.createPopupMenu(JMeterTreeNode.java:156)
at org.apache.jmeter.gui.action.EditCommand.doAction(EditCommand.java:47)
at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:80)
at org.apache.jmeter.gui.action.ActionRouter.access$000(ActionRouter.java:40)
at org.apache.jmeter.gui.action.ActionRouter$1.run(ActionRouter.java:62)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
我一整天都在做一些研究,到目前为止还没有任何解决办法。因此,没有人会浪费他们的时间,结果,比如,实际上,所有来自此日志中各种堆栈跟踪错误的谷歌搜索结果,都没有产生可行的结果。我正在使用Jmeter 3,但已经在Jmeter 2.12和Jmeter 2.9中进行了尝试。这可能相关,也可能不相关,但Jmeter 2.12的工作原理是不会发生此错误,但是采样器中没有出现任何单元测试 第一行解释了一切: 丢失的罐子 无法创建kg.apc.jmeter.config.redis.RedisDataSet。java.lang.NoClassDefFoundError:org/apache/commons/pool/impl/GenericObjectPool$Config 这是因为JMeter类路径中缺少JAR 看起来您的测试是在某个安装了插件的地方创建的,您当前正试图在干净的JMeter上运行它 我建议如下: 清洁JMeter 3.0 使用插件管理器安装Redis数据集 将测试库导入lib/junit文件夹 重新启动JMeter
第一行解释了一切: 丢失的罐子 无法创建kg.apc.jmeter.config.redis.RedisDataSet。java.lang.NoClassDefFoundError:org/apache/commons/pool/impl/GenericObjectPool$Config 这是因为JMeter类路径中缺少JAR 看起来您的测试是在某个安装了插件的地方创建的,您当前正试图在干净的JMeter上运行它 我建议如下: 清洁JMeter 3.0 使用插件管理器安装Redis数据集 将测试库导入lib/junit文件夹 重新启动JMeter 我建议你: 安装一个干净的3.0版本 在jmeter/lib中添加依赖项 您在lib/junit中的junit类 如果使用JUnit4,请确保在junit请求采样器中勾选SearchforJUnit4注释框 您的案例不需要安装Jmeter插件或插件管理器 如果问题仍然存在,请显示新的jmeter.log文件我建议您: 安装一个干净的3.0版本 在jmeter/lib中添加依赖项 您在lib/junit中的junit类 如果使用JUnit4,请确保在junit请求采样器中勾选SearchforJUnit4注释框 您的案例不需要安装Jmeter插件或插件管理器
如果问题仍然存在,请显示新的jmeter.log文件我已解决了所有人的问题,但它并没有真正解释堆栈跟踪中出现这些错误的原因。单元测试需要凭证,事实证明我必须将凭证放在Jmeter/bin文件夹中。一旦我这样做了,测试运行良好。同样,我也不知道为什么这会导致错误 我每个人都解决了这个问题,但是它并没有真正解释为什么这些是堆栈跟踪中的错误。单元测试需要凭证,事实证明我必须将凭证放在Jmeter/bin文件夹中。一旦我这样做了,测试运行良好。同样,我也不知道为什么这会导致错误 这也是我的第一个想法。我试过这些步骤,但都不起作用。此外,当我使用它附带的测试junit jar和其他带有单元测试的jar时,JMeter工作得很好。我想我的罐子里可能有什么东西劫持了它,或者不允许找到GenericObject。这也是我的第一个想法。我试过这些步骤,但都不起作用。此外,当我使用它附带的测试junit jar和其他带有单元测试的jar时,JMeter工作得很好。我想我的罐子里可能有什么东西劫持了它或者不允许找到GenericObject。