当我试图通过Java代码(非gui jmeter)远程连接jmeter时,我收到一个错误

当我试图通过Java代码(非gui jmeter)远程连接jmeter时,我收到一个错误,java,jmeter,remote-access,jmeter-plugins,Java,Jmeter,Remote Access,Jmeter Plugins,我试图通过我的Java代码(非gui jmeter)远程连接jmeter,但我得到一个错误:rconfigure()方法Java.rmi.unmarshaleException 这是我的密码: public static void main(String[] argv) throws Exception { // Set jmeter home path File jmeterHome = new File("E:\\apache-jmeter-3.2"); if (

我试图通过我的Java代码(非gui jmeter)远程连接jmeter,但我得到一个错误:rconfigure()方法Java.rmi.unmarshaleException

这是我的密码:

public static void main(String[] argv) throws Exception {

    // Set jmeter home path
    File jmeterHome = new File("E:\\apache-jmeter-3.2");

    if (jmeterHome.exists()) {

        // Inserting the properties of Jmeter.

        File jmeterProperties = new File(
                "E:\\apache-jmeter-3.2\\bin\\jmeter.properties");
        if (jmeterProperties.exists()) {
            // Creating JMeter Engine

            StandardJMeterEngine jmeter = new StandardJMeterEngine();
            // JMeter initialization (properties, log levels, locale, etc)

            JMeterUtils.setJMeterHome(jmeterHome.getPath());
            JMeterUtils.loadJMeterProperties(jmeterProperties.getPath());

            // you can comment this line out to see extra log messages of
            // i.e DEBUG level

            JMeterUtils.initLogging();
            JMeterUtils.initLocale();

            // JMeter Test Plan, basically JOrphan HashTree
            HashTree testPlanTree = new HashTree();

            // First HTTP Sampler
            HTTPSamplerProxy sampler = new HTTPSamplerProxy();
            sampler.setDomain("https://google.com/");
            sampler.setPort(8080);
            sampler.setPath("/");
            sampler.setMethod("GET");

            sampler.setProperty(TestElement.TEST_CLASS,
                    HTTPSamplerProxy.class.getName());

            sampler.setProperty(TestElement.GUI_CLASS,
                    HttpTestSampleGui.class.getName());

            // Loop Controller
            LoopController loopController = new LoopController();
            loopController.setLoops(10);
            loopController.setFirst(true);
            loopController.setProperty(TestElement.TEST_CLASS,
                    LoopController.class.getName());
            loopController.setProperty(TestElement.GUI_CLASS,
                    LoopControlPanel.class.getName());
            loopController.initialize();

            // InterleaveControler

            // InterleaveControl controller = new InterleaveControl();

            // Thread Group
            ThreadGroup threadGroup = new ThreadGroup();
            threadGroup.setName("Sample Thread Group");
            threadGroup.setNumThreads(100);
            threadGroup.setRampUp(10);
            threadGroup.setSamplerController(loopController);
            threadGroup.setProperty(TestElement.TEST_CLASS,
                    ThreadGroup.class.getName());
            threadGroup.setProperty(TestElement.GUI_CLASS,
                    ThreadGroupGui.class.getName());

            // Test Plan
            TestPlan testPlan = new TestPlan("Test planing");
            testPlan.setProperty(TestElement.GUI_CLASS,
                    TestPlanGui.class.getName());
            testPlan.setUserDefinedVariables((Arguments) new ArgumentsPanel()
                    .createTestElement());

            // Construct Test Plan from previously initialized elements
            testPlanTree.add(testPlan);
            HashTree threadGroupHashTree = testPlanTree.add(testPlan,
                    threadGroup);
            threadGroupHashTree.add(sampler);

            // save generated test plan to JMeter's .jmx file format
            SaveService.loadProperties();
            SaveService.saveTree(testPlanTree, new FileOutputStream(
                    "E:\\JunitJArs\\junitjunitjmeter_api.csv"));

            // add Summarizer output to get test progress in stdout like:
            // summary = 2 in 1.3s = 1.5/s Avg: 631 Min: 290 Max: 973 Err: 0
            // (0.00%)

            Summariser summer = null;
            String summariserName = JMeterUtils.getPropDefault(
                    "summariser.name", "summary");
            if (summariserName.length() > 0) {
                summer = new Summariser(summariserName);
            }

            // Store execution results into a .jtl file, we can save file as
            // csv also

            String reportFile = "C:\\Users\\User\\Desktop\\Jmeter\\new\\report.jtl";
            String csvFile = "C:\\Users\\User\\Desktop\\Jmeter\\new\\report.csv";

            ResultCollector logger = new ResultCollector(summer);
            logger.setFilename(reportFile);

            ResultCollector csvlogger = new ResultCollector(summer);
            csvlogger.setFilename(csvFile);

            testPlanTree.add(testPlanTree.getArray()[0], logger);
            testPlanTree.add(testPlanTree.getArray()[0], csvlogger);

            // Run Test Plan

            List<JMeterEngine> engines = new LinkedList<>();
            Properties remoteProps = new Properties();

            DistributedRunner distributedRunner = new DistributedRunner(
                    remoteProps);

            List<String> hosts = new LinkedList<>();

            // adding JMeter slaves here

            hosts.add("172.16.104.199");


            distributedRunner.setStdout(System.out);
            distributedRunner.setStdErr(System.err);

            distributedRunner.init(hosts, testPlanTree);


            engines.addAll(distributedRunner.getEngines());
            distributedRunner.start();

            // jmeter.configure(testPlanTree);
            // / jmeter.run();
            System.err.println("Your Test excuted");
            System.exit(0);
        }
    }
    System.err.println("Jmeter properties error");
    System.exit(1);
}
publicstaticvoidmain(字符串[]argv)引发异常{
//设置jmeter主路径
File jmeterHome=新文件(“E:\\apache-jmeter-3.2”);
如果(jmeterHome.exists()){
//插入Jmeter的属性。
File jmeterProperties=新文件(
“E:\\apache-jmeter-3.2\\bin\\jmeter.properties”);
if(jmeterProperties.exists()){
//创建JMeter引擎
StandardJMeterEngine jmeter=新的StandardJMeterEngine();
//JMeter初始化(属性、日志级别、区域设置等)
setJMeterHome(jmeterHome.getPath());
装入jmeterProperties(jmeterProperties.getPath());
//您可以注释掉这一行以查看的额外日志消息
//即调试级别
JMeterUtils.initLogging();
JMeterUtils.initLocale();
//JMeter测试计划,基本上是JOrphan HashTree
HashTree testPlanTree=新的HashTree();
//第一个HTTP采样器
HTTPSamplerProxy采样器=新的HTTPSamplerProxy();
sampler.setDomain(“https://google.com/");
采样器设置端口(8080);
sampler.setPath(“/”);
取样器设置方法(“GET”);
sampler.setProperty(TestElement.TEST_类,
HTTPSamplerProxy.class.getName());
sampler.setProperty(TestElement.GUI_类,
HttpTestSampleGui.class.getName());
//回路控制器
LoopController LoopController=新的LoopController();
loopController.setLoops(10);
loopController.setFirst(true);
loopController.setProperty(TestElement.TEST_类,
LoopController.class.getName());
loopController.setProperty(TestElement.GUI_类,
LoopControlPanel.class.getName());
loopController.initialize();
//交织控制器
//交织控制控制器=新的交织控制();
//螺纹组
ThreadGroup ThreadGroup=新的ThreadGroup();
setName(“示例线程组”);
setNumThreads(100);
threadGroup.setramup(10);
threadGroup.setSamplerController(loopController);
threadGroup.setProperty(TestElement.TEST_类,
ThreadGroup.class.getName());
threadGroup.setProperty(TestElement.GUI_类,
ThreadGroupGui.class.getName());
//测试计划
TestPlan TestPlan=新的测试计划(“测试计划”);
testPlan.setProperty(TestElement.GUI_类,
TestPlanGui.class.getName());
testPlan.setUserDefinedVariables((参数)new ArgumentsPanel()
.createTestElement());
//从先前初始化的元素构造测试计划
testPlanTree.add(testPlan);
HashTree threadGroupHashTree=testPlanTree.add(testPlan,
螺纹组);
threadGroupHashTree.add(采样器);
//将生成的测试计划保存为JMeter的.jmx文件格式
SaveService.loadProperties();
SaveService.saveTree(testPlanTree,新文件输出流(
“E:\\JunitJArs\\junitjunitjmeter_api.csv”);
//添加摘要器输出以获取标准输出中的测试进度,如:
//汇总=2英寸1.3s=1.5/s平均值:631最小值:290最大值:973错误:0
// (0.00%)
summer=null;
String summariserName=JMeterUtils.getPropDefault(
“总结者姓名”、“总结”);
如果(SummarySerName.length()>0){
summer=新汇总器(汇总器名称);
}
//将执行结果存储到.jtl文件中,我们可以将该文件另存为
//csv也
String reportFile=“C:\\Users\\User\\Desktop\\Jmeter\\new\\report.jtl”;
String csvFile=“C:\\Users\\User\\Desktop\\Jmeter\\new\\report.csv”;
ResultCollector logger=新的ResultCollector(夏季);
logger.setFilename(reportFile);
ResultCollector csvlogger=新的ResultCollector(夏季);
setFilename(csvFile);
添加(testPlanTree.getArray()[0],记录器);
testPlanTree.add(testPlanTree.getArray()[0],csvlogger);
//运行测试计划
列表引擎=新的LinkedList();
Properties remoteProps=新属性();
DistributedRunner DistributedRunner=新DistributedRunner(
远程道具);
列表主机=新的LinkedList();
//在这里添加JMeter从属
添加(“172.16.104.199”);
分布式Runner.SetstOut(系统输出);
distributedRunner.setStdErr(System.err);
init(hosts,testPlanTree);
engines.addAll(distributedRunner.getEngines());
distributeRunner.start();
//configure(testPlanTree);
///jmeter.run();
System.err.println(“您的测试已执行”);
系统出口(0);
}
}
System.err.println(“Jmeter属性错误”);
系统出口(1);
}
在它的展示中

-配置远程引擎:172.16.104.199

启动远程发动机

开始测试@Wed Jun 28 17:45:07 IST 2017(1498652107364)rconfigure()方法java.rmi.unmarshaleException中出现错误


我试图搜索它,但没有得到任何正确的解决方案

如果客户端上的jdk版本与服务器上的不同,可能会发生这种情况 参见

I中的