当 运行 不是来自 $JMETER_HOME/bin 时,Jmeter 无法使用 Prometheus JMX 代理启动

Jmeter failed to start with the Prometheus JMX agent when run not from $JMETER_HOME/bin

尝试为 Jmeter 配置 Prometheus JMX 代理但遇到以下问题 - 当我在 $JMETER_HOME/bin 文件夹之外启动 Jmeter - 它失败并出现错误:

java.lang.Throwable: Could not access null/lib
        at org.apache.jmeter.NewDriver.<clinit>(NewDriver.java:105)
java.lang.Throwable: Could not access null/lib/ext
        at org.apache.jmeter.NewDriver.<clinit>(NewDriver.java:105)
java.lang.Throwable: Could not access null/lib/junit
        at org.apache.jmeter.NewDriver.<clinit>(NewDriver.java:105)
java.lang.ClassNotFoundException: org.apache.jmeter.JMeter
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        at org.apache.jmeter.NewDriver.main(NewDriver.java:250)
JMeter home directory was detected as: null

启动命令:

java -Dcom.sun.management.jmxremote.port=12021 -Dcom.sun.management.jmxremote.rmi.port=12021 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dgroovy.use.classvalue=true -javaagent:/apps/injector/apache-jmeter/bin/jmx_prometheus_javaagent-0.13.0.jar=8778:/apps/injector/apache-jmeter/bin/prometheus_config.yaml -jar /apps/injector/apache-jmeter/bin/ApacheJMeter.jar -n -t /apps/injector/apache-jmeter/extras/Test.jmx

如果我从 $JMETER_HOME/bin 文件夹中 运行 它,相同的命令工作正常。 它本身似乎不是 Jmeter 问题,因为我可以从任何地方 运行 相同的命令,如果我删除 -javaagent 选项,它不会导致错误。

有人可以帮我配置 Prometheus JMX 代理以正确使用 Jmeter。

添加到 JMeter 的 java 选项:

-Djmeter.home=$JMETER_HOME

根据您的 bugzilla 票:

感谢 JMeter 团队的 Felix S. 成员