Jmeter 2.10 HTTP 记录器抛出 keytool 异常 [英] Jmeter 2.10 HTTP recorder throws keytool exception
问题描述
我正在尝试调查 jmeter,但很快就遇到了一些问题.我正在尝试遵循 http://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.pdf 上的教程.当我尝试启动记录器时,出现无法创建代理错误.日志给了我这个消息:
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
我不知道为什么 exe 不会被拾取,因为它是 java 的一部分并且在我的路径中,或者为什么 jmeter zip 会排除一个必要的文件,所以我将 keytool 从我的 java 安装复制到它正在查找的目录中并再次尝试.当我得到这个时:
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:
错误 - jmeter.protocol.http.proxy.ProxyControl: 无法初始化密钥存储 java.io.IOException:
ERROR - jmeter.protocol.http.proxy.ProxyControl: Could not initialise key store java.io.IOException:
我收到了一个-1073741515
的代码,对于初学者来说没有帮助.我在指向和不指向我的代理服务器的情况下尝试了这些事情,结果没有区别.我使用的是 64 位 Windows 7 系统,并且使用的是 jdk 1.7.
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?
这里是完整的日志
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.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 46 more
推荐答案
自 JMeter 2.10 以来,记录已得到改进,可以更好地处理嵌入式资源和动态创建证书.这使得记录复杂的 HTTPS 网站变得更加容易.
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.
为了添加这些功能,JMeter 现在使用 keytool 实用程序(在 JDK 中可用),因此您需要确保配置正确,在开始之前阅读此 wiki 页面:
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:
还要确保您阅读:
请注意,使用 JDK7 会好得多.(系统上要安装jdk7)
Note it is much better to use a JDK7. (jdk7 should be installed on the system)
如果你不想阅读长答案(你应该:-)),那么:确保您已正确设置 JAVA_HOME 和 PATH,以执行此操作:打开jmeter.bat并添加(在launch.exe命令后的顶部):
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=JDK 路径
SET JAVA_HOME=Path to JDK
设置路径=%PATH%;%JAVA_HOME%\bin
SET PATH=%PATH%;%JAVA_HOME%\bin
重启 JMeter 并重新测试.
Restart JMeter and retest.
如果它不起作用,您可以通过在 user.properties 中定义以下 JMeter 属性来解决:
If it doesn't work, you can workaround by defining the following JMeter property in user.properties:
proxy.cert.alias=anything
proxy.cert.alias=anything
如果你想正确地学习 jmeter,这本本书 会帮助你.
If you're looking to learn jmeter correctly, this book will help you.
这篇关于Jmeter 2.10 HTTP 记录器抛出 keytool 异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!