LoadRunner javavuser错误排查
Loadrunner 9.5/11 使用java 开发vsuer script需要的环境配置
本文从两个方面来讲:windows 32位操作系统;windows 64 操作系统
开始之前,先说下java环境变量配置(共3处):
(1)JAVA_HOME: C:\Program Files\Java\jdk1.6.0_45 (请根据实际情况配置)
(2)PATH: %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
(3)CLASSPATH: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar(前边是点号分号)
一、windows 32位操作系统安装Loadrunner 9.5/11 使用java vuser 必要的配置
(1)操作系统:windows 32位系统(windows7 32 位 测试通过)(2)JDK版本:jdk1.6 32位(jdk1.6测试通过,目前LR不支持1.7及以上的)(3)对jdk1.7及以上开发的脚本,运行会报错,原因 LR不支持JDK1.7及以上,如果环境OK,需要新建测试脚本。这几点非常重要,不然会报各种问题的错误,例如:Error: Java VM internal error:Error Loading javai.dll..[MsgId: MERR-22995]Warning: Extension java_int.dll reports error -1 on call to function ExtPerProcessInitialize[MsgId: MWAR-10485]Error: Thread Context: Call to service of the driver failed, reason - thread context wasn't initialized on this thread.[MsgId: MERR-10176]
二、 windows 64 位操作系统安装Loadrunner 9.5/11 使用Java vuser 必要的配置
(1) 操作系统 windows 64(windows 7 64位测试通过)(2) jdk 1.6 必须是32位的(虽然操作系统是64位的),不能是64位jdk,目前jdk 1.6 32位的再windows 7 64位上测试通过。
64位系统 安装64位jdk 1.6,运行脚本会报如下错误:
Error: Failed to find java.exe.
Please add the <JDK>\bin to the path and try again.[MsgId: MERR-22968]
Warning: Extension java_int.dll reports error -1 on call to function ExtPerProcessInitialize[MsgId: MWAR-10485]
Error: Thread Context: Call to service of the driver failed, reason - thread context wasn't initialized on this thread.[MsgId: MERR-10176]
特别强调:
以上两点非常重要,请大家核对自己的配置。知道loadrunner可以使用java写脚本,今天就试了一下,遇到了两个第一次写Java Vuser脚本普遍都会遇到的问题。
第一个问题:Error: Java VM internal error:Error Loading javai.dll.没有找到java的Jdk
解决:选择Use specified JDK,在JDK后面贴上你的java jdk地址,例如:D:\Program Files\Java\jdk1.6.0_20,点击OK即可。(loadrunner11,可以使用jdk1.6,1.7,没试还不知道)
第二个问题:Error: at java.lang.ClassLoader.defineClass1(Native Method)
解决:loadrunner在编译Java Vuser的时候会加载我们配置环境变量中的path,如果path中有不同版本的java jdk就会造成冲突,删除path中的其它版本的jdk路径,重启loadrunner。
在测试中,运用java vuser编写脚本时,如果要导入一些jar包,loadrunner的操作方式是在 Runtime settings里的Java Environment Settings 的classpath里面添加,但是,在这里面只能通过点击右上角的 第三个(形如文件夹)按钮加jar包,点一次加入一个,如果测试过程中需要大量的jar包,那么这种方法显然很慢很头痛,现在简述一下我的处理方式。可以方便快捷的将一个文件夹下的所有jar包加入到测试环境中。
(1)新建一个java vuser脚本,然后点击保存,输入脚本名称,如test,将脚本保存到你想保存的位置,假如 C:/,这样loadruner会在c:/盘建立一个test文件夹
(2)[size=x-large]在virtual user generator 里按F4,或者点击右上角工具栏的最后一个按钮,调出runtime setting,
定位到Java Environment Settings 的classpath,你将看到loadrunner自动加载了系统的环境变量,你在这里可以删除一些不需要的jar,只保存jre即可。点击确定
(3)来到你脚本保存的目录(本例为c:/test),找到default.cfg文件,用记事本或者任何文本编辑器打开,你将看到文件的底部有
[JavaVM:Options]
Java_Env_ClassPath=
。。。。。。。。。。。
将你想要加入的jar包的路径加在“Java_Env_ClassPath=”后面就可以了(只需修改这里,其他项不用改)。例如:
Java_Env_ClassPath=.;E:\jdk1.5.0_05\lib;E:\jdk1.5.0_05\jre;E:\lib\activation-1.1.jar;E:\lib\axiom-api-1.2.8.jar;
E:\lib\axiom-impl-1.2.8.jar;E:\lib\com.ibm.mq.jar;E:\lib\com.ibm.mqjms.jar;E:\lib\commons-logging.jar;E:\lib\connector.jar;E:\lib\dhbcore.jar;E:\lib\javamail_1.4_spec-1.3.jar;E:\lib\jetty-6.1.9.jar;E:\lib\jetty-util-6.1.9.jar;E:\lib\jms_1.1_spec-1.1.1.jar;E:\lib\log4j.jar;E:\lib\logging\jcl104-over-slf4j-1.5.0.jar;E:\lib\logging\logback-classic-0.9.8.jar;E:\lib\logging\logback-core-0.9.8.jar;E:\lib\logging\slf4j-api-1.5.0.jar;E:\lib\org.springframework.ws-2.0.0.M1-sources.jar;E:\lib\org.springframework.ws-2.0.0.M1.jar;
(这串字符串你可以写一个程序,直接获取某给目录的jar包,附件中是我的程序,只需修改你jar包放在的目录就可以了)
保存后,再回到runtime settings 你将看到loadrunner把你加入的包加载了进去,至此你就可以进行其他工作啦。[/size]
(1)新建一个java vuser脚本,然后点击保存,输入脚本名称,如test,将脚本保存到你想保存的位置,假如 C:/,这样loadruner会在c:/盘建立一个test文件夹
(2)[size=x-large]在virtual user generator 里按F4,或者点击右上角工具栏的最后一个按钮,调出runtime setting,
定位到Java Environment Settings 的classpath,你将看到loadrunner自动加载了系统的环境变量,你在这里可以删除一些不需要的jar,只保存jre即可。点击确定
(3)来到你脚本保存的目录(本例为c:/test),找到default.cfg文件,用记事本或者任何文本编辑器打开,你将看到文件的底部有
[JavaVM:Options]
Java_Env_ClassPath=
。。。。。。。。。。。
将你想要加入的jar包的路径加在“Java_Env_ClassPath=”后面就可以了(只需修改这里,其他项不用改)。例如:
Java_Env_ClassPath=.;E:\jdk1.5.0_05\lib;E:\jdk1.5.0_05\jre;E:\lib\activation-1.1.jar;E:\lib\axiom-api-1.2.8.jar;
E:\lib\axiom-impl-1.2.8.jar;E:\lib\com.ibm.mq.jar;E:\lib\com.ibm.mqjms.jar;E:\lib\commons-logging.jar;E:\lib\connector.jar;E:\lib\dhbcore.jar;E:\lib\javamail_1.4_spec-1.3.jar;E:\lib\jetty-6.1.9.jar;E:\lib\jetty-util-6.1.9.jar;E:\lib\jms_1.1_spec-1.1.1.jar;E:\lib\log4j.jar;E:\lib\logging\jcl104-over-slf4j-1.5.0.jar;E:\lib\logging\logback-classic-0.9.8.jar;E:\lib\logging\logback-core-0.9.8.jar;E:\lib\logging\slf4j-api-1.5.0.jar;E:\lib\org.springframework.ws-2.0.0.M1-sources.jar;E:\lib\org.springframework.ws-2.0.0.M1.jar;
(这串字符串你可以写一个程序,直接获取某给目录的jar包,附件中是我的程序,只需修改你jar包放在的目录就可以了)
保存后,再回到runtime settings 你将看到loadrunner把你加入的包加载了进去,至此你就可以进行其他工作啦。[/size]