Jmeter 2.10 HTTP recorder throws keytool exception

匿名 (未验证) 提交于 2019-12-03 01:11:01

问题:

I am trying to investigate jmeter and have quickly run into some problems. I am attempting to follow the tutorial at http://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.pdf. When I attempt to start the recorder I get a cannot create proxy error. The logs give me this message:

2013/10/23 13:40:54 INFO  - jmeter.util.JsseSSLManager: Using default SSL protocol: TLS  2013/10/23 13:40:54 INFO  - jmeter.util.JsseSSLManager: SSL session context: per-thread  2013/10/23 13:54:32 WARN  - jmeter.protocol.http.proxy.ProxyControl: Could not open/read key store C:\apache-jmeter-2.10\bin\proxyserver.jks (The system cannot find the file specified)  2013/10/23 13:54:32 INFO  - jmeter.protocol.http.proxy.ProxyControl: Creating Proxy CA in C:\apache-jmeter-2.10\bin\proxyserver.jks  2013/10/23 13:54:32 ERROR - jmeter.protocol.http.proxy.ProxyControl: Could not initialise key store java.io.IOException: Cannot run program "keytool" (in directory "C:\apache-jmeter-2.10\bin"): CreateProcess error=2, The system cannot find the file specified

I don't know why the exe would not be picked up as it is part of java and in my path or why the jmeter zip would exclude a necessary file so I copied keytool from my java install into the directory it was looking for it and tried again. when I did I got this:

ERROR - jmeter.protocol.http.proxy.ProxyControl: Could not initialise key store java.io.IOException:

I received a code of -1073741515, which as a beginner is not helpful. I tried these things with and without pointing to my proxy server, no difference in the results. I am on a windows 7 system 64 bit, and am using jdk 1.7.

Any suggestions on what steps I can take to correct the issue?

Edit: here is the complete log

    2013/10/23 15:34:06 INFO  - jmeter.util.JMeterUtils: Setting Locale to en_US    2013/10/23 15:34:06 INFO  - jmeter.JMeter: Loading user properties from: C:\apache-jmeter-.10\bin\user.properties    2013/10/23 15:34:06 INFO  - jmeter.JMeter: Loading system properties from: C:\apache-meter-2.10\bin\system.properties    2013/10/23 15:34:07 INFO  - jmeter.JMeter: Copyright (c) 1998-2013 The Apache Software Foundation    2013/10/23 15:34:07 INFO  - jmeter.JMeter: Version 2.10 r1533061    2013/10/23 15:34:07 INFO  - jmeter.JMeter: java.version=1.7.0_21    2013/10/23 15:34:07 INFO  - jmeter.JMeter: java.vm.name=Java HotSpot(TM) 64-Bit Server VM  2013/10/23 15:34:07 INFO  - jmeter.JMeter: os.name=Windows 7    2013/10/23 15:34:07 INFO  - jmeter.JMeter: os.arch=amd64    2013/10/23 15:34:07 INFO  - jmeter.JMeter: os.version=6.1    2013/10/23 15:34:07 INFO  - jmeter.JMeter: file.encoding=Cp1252    2013/10/23 15:34:07 INFO  - jmeter.JMeter: Default Locale=English (United States)    2013/10/23 15:34:07 INFO  - jmeter.JMeter: JMeter  Locale=English (United States)    2013/10/23 15:34:07 INFO  - jmeter.JMeter: JMeterHome=C:\apache-jmeter-2.10    2013/10/23 15:34:07 INFO  - jmeter.JMeter: user.dir  =C:\apache-jmeter-2.10\bin    2013/10/23 15:34:07 INFO  - jmeter.JMeter: PWD       =C:\apache-jmeter-2.10\bin    2013/10/23 15:34:07 INFO  - jmeter.JMeter: IP: xxxxxxxx Name: xxxxx FullName: xxxxx    2013/10/23 15:34:07 INFO  - jmeter.JMeter: Loaded icon properties from org/apache/jmeter/images/icon.properties    2013/10/23 15:34:07 INFO  - jmeter.engine.util.CompoundVariable: Note: Function class names must contain the string: '.functions.'    2013/10/23 15:34:07 INFO  - jmeter.engine.util.CompoundVariable: Note: Function class names must not contain the string: '.gui.'    2013/10/23 15:34:07 INFO  - jmeter.gui.action.LookAndFeelCommand: Using look and feel: javax.swing.plaf.metal.MetalLookAndFeel [Metal, CrossPlatform]    2013/10/23 15:34:08 INFO  - jmeter.util.BSFTestElement: Registering JMeter version of JavaScript engine as work-round for BSF-22    2013/10/23 15:34:08 INFO  - jmeter.protocol.http.sampler.HTTPSamplerBase: Cannot find .className property for htmlParser, using default    2013/10/23 15:34:08 INFO  - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/html is     2013/10/23 15:34:08 INFO  - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for application/xhtml+xml is     2013/10/23 15:34:08 INFO  - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for application/xml is     2013/10/23 15:34:08 INFO  - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/xml is     2013/10/23 15:34:08 INFO  - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/vnd.wap.wml is org.apache.jmeter.protocol.http.parser.RegexpHTMLParser    2013/10/23 15:34:08 INFO  - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.protocol.http.control.gui.WebServiceSamplerGui    2013/10/23 15:34:08 INFO  - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.protocol.http.modifier.gui.ParamModifierGui    2013/10/23 15:34:08 INFO  - jmeter.protocol.http.proxy.ProxyControl: HTTP(S) Test Script Recorder SSL Proxy will use keys that support embedded 3rd party resources in file C:\apache-jmeter-2.10\bin\proxyserver.jks    2013/10/23 15:34:09 INFO  - jmeter.samplers.SampleResult: Note: Sample TimeStamps are START times    2013/10/23 15:34:09 INFO  - jmeter.samplers.SampleResult: sampleresult.default.encoding is set to ISO-8859-1    2013/10/23 15:34:09 INFO  - jmeter.samplers.SampleResult: sampleresult.useNanoTime=true    2013/10/23 15:34:09 INFO  - jmeter.samplers.SampleResult: sampleresult.nanoThreadSleep=5000    2013/10/23 15:34:22 WARN  - jmeter.protocol.http.proxy.ProxyControl: Could not open/read   key store C:\apache-jmeter-2.10\bin\proxyserver.jks (The system cannot find the file specified)    2013/10/23 15:34:22 INFO  - jmeter.protocol.http.proxy.ProxyControl: Creating Proxy CA in C:\apache-jmeter-2.10\bin\proxyserver.jks    2013/10/23 15:34:22 ERROR - jmeter.protocol.http.proxy.ProxyControl: Could not initialise key store java.io.IOException: Cannot run program "keytool" (in directory "C:\apache-jmeter-2.10\bin"): CreateProcess error=2, The system cannot find the file specified       at java.lang.ProcessBuilder.start(Unknown Source)     at org.apache.jorphan.exec.SystemCommand.run(SystemCommand.java:142)     at org.apache.jorphan.exec.SystemCommand.run(SystemCommand.java:125)     at org.apache.jorphan.exec.KeyToolUtils.genkeypair(KeyToolUtils.java:123)     at org.apache.jorphan.exec.KeyToolUtils.generateProxyCA(KeyToolUtils.java:181)     at org.apache.jmeter.protocol.http.proxy.ProxyControl.initDynamicKeyStore(ProxyControl.java:1275)     at org.apache.jmeter.protocol.http.proxy.ProxyControl.initKeyStore(ProxyControl.java:1205)     at org.apache.jmeter.protocol.http.proxy.ProxyControl.startProxy(ProxyControl.java:431)     at org.apache.jmeter.protocol.http.proxy.gui.ProxyControlGui.startProxy(ProxyControlGui.java:485)     at org.apache.jmeter.protocol.http.proxy.gui.ProxyControlGui.actionPerformed(ProxyControlGui.java:370)     at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)     at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)     at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)     at javax.swing.DefaultButtonModel.setPressed(Unknown Source)     at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)     at java.awt.Component.processMouseEvent(Unknown Source)     at javax.swing.JComponent.processMouseEvent(Unknown Source)     at java.awt.Component.processEvent(Unknown Source)     at java.awt.Container.processEvent(Unknown Source)     at java.awt.Component.dispatchEventImpl(Unknown Source)     at java.awt.Container.dispatchEventImpl(Unknown Source)     at java.awt.Component.dispatchEvent(Unknown Source)     at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)     at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)     at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)     at java.awt.Container.dispatchEventImpl(Unknown Source)     at java.awt.Window.dispatchEventImpl(Unknown Source)     at java.awt.Component.dispatchEvent(Unknown Source)     at java.awt.EventQueue.dispatchEventImpl(Unknown Source)     at java.awt.EventQueue.access$200(Unknown Source)     at java.awt.EventQueue$3.run(Unknown Source)     at java.awt.EventQueue$3.run(Unknown Source)     at java.security.AccessController.doPrivileged(Native Method)     at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)     at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)     at java.awt.EventQueue$4.run(Unknown Source)     at java.awt.EventQueue$4.run(Unknown Source)     at java.security.AccessController.doPrivileged(Native Method)     at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)     at java.awt.EventQueue.dispatchEvent(Unknown Source)     at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)     at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)     at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)     at java.awt.EventDispatchThread.pumpEvents(Unknown Source)     at java.awt.EventDispatchThread.pumpEvents(Unknown Source)     at java.awt.EventDispatchThread.run(Unknown Source) Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified     at java.lang.ProcessImpl.create(Native Method)     at java.lang.ProcessImpl.(Unknown Source)     at java.lang.ProcessImpl.start(Unknown Source)     ... 46 more

回答1:

Since JMeter 2.10, recording has been improved to better handle embedded resources and creation of certificates on the fly. This makes recording complex HTTPS websites much easier.

To add these features, JMeter now uses keytool utility (available in JDK) so you need to ensure your configuration is correct, read this wiki page before starting:

Also ensure you read:

Note it is much better to use a JDK7. (jdk7 should be installed on the system)

If you don't want to read the long answer (which you should :-) ), then: Ensure you have JAVA_HOME and PATH set correctly, to do it: Open jmeter.bat and add this (at the top after launch.exe command):

SET JAVA_HOME=Path to JDK

SET PATH=%PATH%;%JAVA_HOME%\bin

Restart JMeter and retest.

If it doesn't work, you can workaround by defining the following JMeter property in user.properties:

proxy.cert.alias=anything



回答2:

Try running JMeter from a command prompt with admin privs, works for me !



回答3:

Since the version JMeter 2.10, you must configure the var PATH in Windows.

The problem become from new PROXY HTTPS.

To avoid configuration of JMeter and JDK from Oracle, I make a package for installation.

A new package was created for JMeter 2.11



回答4:

Also I would recommend you to consider alternatives in automatic script writing. Actually there are some ways of .jmx scripts writing:

  1. using proxy as described in the tutorial you've given

  2. using badBoy tool .

    http://www.badboy.com.au/ http://www.badboysoftware.biz/docs/ http://www.youtube.com/watch?v=OX9NbYuE07I

    benefits: easy record, easy export to jmeter.

  3. using blazemeter chrome extenstion:

    http://community.blazemeter.com/knowledgebase/articles/231479-chrome-extension

    benefits: You can export the script written to jmeter and/or to cloud as well and run it on the cloud.

    As soon as you try these approaches probably you'll find out what you've missed.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!