之前换电脑后安装jmeter,启动后有如下报错,度娘了好多地方,最后终于解决,现将解决方法记录如下:
2017-04-28 03:44:11,571 ERROR o.a.j.e.KeyToolUtils: Exception checking for keytool existence, will return false
java.io.IOException: Cannot run program "keytool": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(Unknown Source) ~[?:1.8.0_73]
at org.apache.jorphan.exec.SystemCommand.run(SystemCommand.java:142) ~[jorphan.jar:3.2 r1790748]
at org.apache.jorphan.exec.SystemCommand.run(SystemCommand.java:125) ~[jorphan.jar:3.2 r1790748]
at org.apache.jorphan.exec.KeyToolUtils.checkKeytool(KeyToolUtils.java:436) ~[jorphan.jar:3.2 r1790748]
at org.apache.jorphan.exec.KeyToolUtils.<clinit>(KeyToolUtils.java:94) ~[jorphan.jar:3.2 r1790748]
at org.apache.jmeter.protocol.http.proxy.ProxyControl.<clinit>(ProxyControl.java:248) ~[ApacheJMeter_http.jar:3.2 r1790748]
at org.apache.jmeter.protocol.http.proxy.gui.ProxyControlGui.createPortPanel(ProxyControlGui.java:708) ~[ApacheJMeter_http.jar:3.2 r1790748]
at org.apache.jmeter.protocol.http.proxy.gui.ProxyControlGui.init(ProxyControlGui.java:664) ~[ApacheJMeter_http.jar:3.2 r1790748]
at org.apache.jmeter.protocol.http.proxy.gui.ProxyControlGui.<init>(ProxyControlGui.java:239) ~[ApacheJMeter_http.jar:3.2 r1790748]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_73]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_73]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_73]
at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.8.0_73]
at java.lang.Class.newInstance(Unknown Source) ~[?:1.8.0_73]
at org.apache.jmeter.gui.util.MenuFactory.initializeMenus(MenuFactory.java:505) ~[ApacheJMeter_core.jar:3.2 r1790748]
at org.apache.jmeter.gui.util.MenuFactory.<clinit>(MenuFactory.java:169) ~[ApacheJMeter_core.jar:3.2 r1790748]
at org.apache.jmeter.control.gui.TestPlanGui.createPopupMenu(TestPlanGui.java:93) ~[ApacheJMeter_core.jar:3.2 r1790748]
at org.apache.jmeter.gui.tree.JMeterTreeNode.createPopupMenu(JMeterTreeNode.java:156) ~[ApacheJMeter_core.jar:3.2 r1790748]
at org.apache.jmeter.gui.action.EditCommand.doAction(EditCommand.java:46) ~[ApacheJMeter_core.jar:3.2 r1790748]
at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:74) ~[ApacheJMeter_core.jar:3.2 r1790748]
at org.apache.jmeter.gui.action.ActionRouter.lambda$actionPerformed$0(ActionRouter.java:59) ~[ApacheJMeter_core.jar:3.2 r1790748]
at java.awt.event.InvocationEvent.dispatch(Unknown Source) [?:1.8.0_73]
at java.awt.EventQueue.dispatchEventImpl(Unknown Source) [?:1.8.0_73]
at java.awt.EventQueue.access$500(Unknown Source) [?:1.8.0_73]
at java.awt.EventQueue$3.run(Unknown Source) [?:1.8.0_73]
at java.awt.EventQueue$3.run(Unknown Source) [?:1.8.0_73]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_73]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) [?:1.8.0_73]
at java.awt.EventQueue.dispatchEvent(Unknown Source) [?:1.8.0_73]
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) [?:1.8.0_73]
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) [?:1.8.0_73]
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) [?:1.8.0_73]
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_73]
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_73]
at java.awt.EventDispatchThread.run(Unknown Source) [?:1.8.0_73]
C
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessImpl.create(Native Method) ~[?:1.8.0_73]
at java.lang.ProcessImpl.<init>(Unknown Source) ~[?:1.8.0_73]
at java.lang.ProcessImpl.start(Unknown Source) ~[?:1.8.0_73]
... 35 more
2
2017-04-28 03:44:14,937 INFO o.a.j.e.KeyToolUtils: keytool found at 'C:\Program Files\Java\jre1.8.0_73\bin\keytool'
2
2017-04-28 03:44:14,938 INFO o.a.j.p.h.p.ProxyControl: HTTP(S) Test Script Recorder SSL Proxy will use keys that support embedded 3rd party resources in file D:\Jmeter\apache-jmeter-3.2\bin\proxyserver.jks
2
2017-04-28 03:44:15,997 INFO o.a.j.g.u.MenuFactory: Skipping org.apache.jmeter.protocol.java.sampler.BSFSampler
2
2017-04-28 03:44:16,117 INFO o.a.j.s.FileServer: Default base='D:\Jmeter\apache-jmeter-3.2\bin'
2
2017-04-28 03:44:16,852 INFO o.a.j.g.u.MenuFactory: Skipping org.apache.jmeter.protocol.mongodb.config.MongoSourceElement
2
2017-04-28 03:44:16,854 INFO o.a.j.g.u.MenuFactory: Skipping org.apache.jmeter.protocol.mongodb.sampler.MongoScriptSampler
2
2017-04-28 03:44:20,136 INFO o.a.j.g.u.MenuFactory: Skipping org.apache.jmeter.timers.BSFTimer
2
2017-04-28 03:44:20,265 INFO o.a.j.g.u.MenuFactory: Skipping org.apache.jmeter.visualizers.BSFListener
2
2017-04-28 03:44:20,922 INFO o.a.j.s.SampleResult: Note: Sample TimeStamps are START times
2
2017-04-28 03:44:20,923 INFO o.a.j.s.SampleResult: sampleresult.default.encoding is set to ISO-8859-1
2
2017-04-28 03:44:20,923 INFO o.a.j.s.SampleResult: sampleresult.useNanoTime=true
2
2017-04-28 03:44:20,924 INFO o.a.j.s.SampleResult: sampleresult.nanoThreadSleep=5000
解决办法:
通过echo %PATH% 查看环境变量
C:\ProgramData\Oracle\Java\javapath;"%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin";
Notice the literal value %JAVA_HOME%\bin. This is caused by:
'PATH' contains reference of other variable
'PATH' is modified without evaluation (e.g. by program)
Solution
Open the environment setting box
Do some modification of the value of PATH (trigger the expansion of variables)(修改环境变量,path中直接设置JAVA的绝对路径,如C:\Program Files\Java\jre1.8.0_73\bin)
再次查看环境变量设置
就能识别JAVA的绝对路径C:\Program Files\Java\jre1.8.0_73\bin;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Common Files\NetSarang