执行包含 java -jar Runtime.exec() 的 shell 脚本,需要 java,OS 级别或应用程序级别
Executing shell script containing java -jar Runtime.exec(), which java will it take, OS level or application level
我正在尝试通过 beanshell 从我的 jmeter 测试中执行一个 java jar。
我遵循的方法是创建一个 shell 脚本,使用 Runtime.exec() 函数通过 beanshell 执行它。
我的问题是这个 shell 脚本的执行是否会从 instance/host/OS 级别开始 java,或者它将作为当前 [=] 的一部分执行39=] 应用程序正在使用。
可能有一些悬而未决的问题,我想在此之前提供答案:
- 我有一个 Maven 项目,我在其中指定 java。
- 构建运行具有 beanshell 执行 jar 文件的 jmeter 脚本。
- 我还对 jar 执行的输出进行了一些处理(将特定输出写入另一个文件,因此我编写了 shell 脚本)。
- 我使用这个特定的输出,并在查询之前用它添加到我在 jmeter 中的请求。
感谢任何帮助。
在某种程度上,两者都是。
shell 脚本将作为您的 Java 程序的一部分执行,但它将使用系统默认的 Java 可执行文件执行,除非您指定了 Java 在 exec()
方法调用中可执行。
取决于您 运行 您的应用程序。如果你只是使用
Runtime.getRuntime().exec("java -jar ....");
Process instance will look for java
executable which is available in your OS 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 and call necessary functions directly from the Groovy code. See Apache Groovy - Why and How You Should Use It 文章中以获取更多信息。
我正在尝试通过 beanshell 从我的 jmeter 测试中执行一个 java jar。
我遵循的方法是创建一个 shell 脚本,使用 Runtime.exec() 函数通过 beanshell 执行它。
我的问题是这个 shell 脚本的执行是否会从 instance/host/OS 级别开始 java,或者它将作为当前 [=] 的一部分执行39=] 应用程序正在使用。
可能有一些悬而未决的问题,我想在此之前提供答案:
- 我有一个 Maven 项目,我在其中指定 java。
- 构建运行具有 beanshell 执行 jar 文件的 jmeter 脚本。
- 我还对 jar 执行的输出进行了一些处理(将特定输出写入另一个文件,因此我编写了 shell 脚本)。
- 我使用这个特定的输出,并在查询之前用它添加到我在 jmeter 中的请求。
感谢任何帮助。
在某种程度上,两者都是。
shell 脚本将作为您的 Java 程序的一部分执行,但它将使用系统默认的 Java 可执行文件执行,除非您指定了 Java 在 exec()
方法调用中可执行。
取决于您 运行 您的应用程序。如果你只是使用
Runtime.getRuntime().exec("java -jar ....");
Process instance will look for java
executable which is available in your OS 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 and call necessary functions directly from the Groovy code. See Apache Groovy - Why and How You Should Use It 文章中以获取更多信息。