首页 文章

执行包含java -jar Runtime.exec()的shell脚本,它将采用java,OS级别或应用程序级别

提问于
浏览
0

我试图通过beanshell从我的jmeter测试中执行一个java jar .

我遵循的方法是创建一个shell脚本,使用Runtime.exec()函数通过beanshell执行它 .

The question I have is whether execution of this shell script will take java from instance/host/OS level or it will be executed as part of current java that the application is using.

可能有一些悬而未决的问题,我想在此之前提供答案:

  • 我有一个maven项目,我指定了java .

  • 构建运行jmeter脚本,该脚本具有执行jar文件的beanshell .

  • 我还使用jar执行的输出进行一些处理(将特定输出写入另一个文件,因此我编写了shell脚本) .

  • 我使用此特定输出,并在查询之前使用它在jmeter中添加到我的请求中 .

任何帮助表示赞赏 .

2 回答

  • 0

    在某种程度上,两者 .

    shell脚本将作为Java程序的一部分执行,但它将使用在 exec() 方法调用中指定Java可执行文件的系统's default Java executable unless you' ve来执行 .

  • 1

    取决于您运行应用程序的方式 . 如果你只是使用

    Runtime.getRuntime().exec("java -jar ....");
    

    Process实例将查找 java 可执行文件,该文件可在您的操作系统PATH中找到 . 如果PATH中没有 java 可执行文件 - 则调用将失败 .


    请注意starting from JMeter 3.1 it is recommended to use JSR223 Test Elements and Groovy language用于任何形式的脚本,因此请考虑在下一个可用机会上迁移到Groovy . 例如,您可以启动流程并获得简单的输出:

    String response = "your command".execute().text
    

    而不是在单独的进程中运行.jar,最好将它添加到JMeter Classpath并直接从Groovy代码调用必要的函数 . 有关更多信息,请参阅Apache Groovy - Why and How You Should Use It文章 .

相关问题