blob: 3f461c0020a6f0fe35002a361b24af94f8360c41 [file] [log] [blame]
<?xml version="1.0"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one or more
~ contributor license agreements. See the NOTICE file distributed with
~ this work for additional information regarding copyright ownership.
~ The ASF licenses this file to you under the Apache License, Version 2.0
~ (the "License"); you may not use this file except in compliance with
~ the License. You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<!DOCTYPE document
[
<!ENTITY hellip "&#x02026;" >
<!ENTITY rarr "&#x02192;" >
<!ENTITY vellip "&#x022EE;" >
<!ENTITY nbsp "&#x00A0;" >
<!ENTITY ndash "&#x02013;" >
]>
<document>
<properties>
<author email="dev AT jmeter.apache.org">JMeter developers</author>
<title>Changes</title>
</properties>
<body>
<section name="Changes">
<style type="text/css"><!--
h2 { color: #960000; }
h3 { color: #960000; }
--></style>
<note>
<b>This page details the changes made in the current version only.</b>
<br></br>
Earlier changes are detailed in the <a href="changes_history.html">History of Previous Changes</a>.
</note>
<!-- =================== 5.5 =================== -->
<h1>Version 5.5</h1>
<p>
Summary
</p>
<ul>
<li><a href="#New and Noteworthy">New and Noteworthy</a></li>
<li><a href="#Incompatible changes">Incompatible changes</a></li>
<li><a href="#Bug fixes">Bug fixes</a></li>
<li><a href="#Improvements">Improvements</a></li>
<li><a href="#Non-functional changes">Non-functional changes</a></li>
<li><a href="#Known problems and workarounds">Known problems and workarounds</a></li>
<li><a href="#Thanks">Thanks</a></li>
</ul>
<ch_section>New and Noteworthy</ch_section>
<p>JMeter now supports Java 17</p>
<p>JMeter 5.5 ships with log4j2 2.17.2</p>
<ch_title>Open Model Thread Group</ch_title>
<p>New component: <code><a href="./usermanual/component_reference.html#Open_Model_Thread_Group">Open Model Thread Group</a></code>
allows creating load profiles with variable load.</p>
<p>For example, if you need to gradually increase load from <code>0/sec</code> to <code>10/sec</code> during <code>minute</code>
you could previously use <code>Thread Group + Timer</code> combinations. However, then you need to compute
the expected number of threads, ensure they are created only when needed, and so on.</p>
<p>With <code>Open Model Thread Group</code> you can configure the same load profile as <code>rate(0/sec) random_arrivals(1&nbsp;minute) rate(10/sec)</code>.
The thread group would spawn threads as needed to drive the configured load.
The load profile can use properties, so you can launch the same script with slightly different load levels,
however, the profile can't be updated while the test is running.
</p>
<p>The new thread group is experimental in JMeter 5.5, so please feel free to submit your feedback.</p>
<figure width="1398" height="1117" image="open_model_thread_group.png">Open Model Thread Group sample</figure>
<ch_title>Preparing the deprecation of Oro Regex usage</ch_title>
<p>Another experimental feature in JMeter 5.5 is the ability to replace the Oro based Regex implementation
by the built-in Java based one. To choose the Java based one, set the JMeter property <code>jmeter.regex.engine</code>
to the value <code>java</code>.</p>
<ch_title>Core improvements</ch_title>
<p>Kotlin language is now used in some core classes and tests (e.g. Open Model Thread Group).
JMeter is compiled with <code>apiTarget=1.5</code>, and it ships with <code>kotlin-stdlib</code> 1.6.
</p>
<p><a href="https://github.com/JetBrains/lets-plot-kotlin">lets-plot-kotlin</a> charting library is added,
so it will be easier to refine and create new charts in UI in the future.
</p>
<ch_section>Improvements</ch_section>
<h3>Thread Groups</h3>
<ul>
<li>New component: <code><a href="./usermanual/component_reference.html#Open_Model_Thread_Group">Open Model Thread Group</a></code></li>
</ul>
<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
<li><bug>65027</bug>Detect mime-type for files automatically when adding files to HTTP Sampler</li>
<li><bug>65020</bug>HTTP Sampler/Files upload tab &ndash; add missing buttons</li>
<li><pr>650</pr>HTTP Sampler timestamp fix when exception is caught. Contributed by Konstantin Kalinin (konstantin at kkalinin.pro)</li>
<li><bug>65328</bug><pr>666</pr>HTTP 308 Permanent Redirect is not supported. Contributed by
Baptiste Gaillard (baptiste.gaillard at gmail.com)</li>
</ul>
<h3>Other samplers</h3>
<ul>
<li><bug>65149</bug><pr>644</pr>Encode the personal part of email addresses in SMTP Sampler</li>
<li><pr>638</pr>Various additions to the Bolt Sampler. Added <code>transaction timeout</code>, <code>database</code>
option required for Neo4j 4.x (with multi-database support) and <code>access mode</code> option, that allows running
against a Neo4j Enterprise Causal Cluster. Contributed by David Pecollet (david.pecollet at gmail.com)</li>
</ul>
<h3>Controllers</h3>
<ul>
<li><pr>665</pr>Increase visible lines of code in <code>IfController</code> and <code>WhileController</code>.
Based on an idea by David Getzlaff (david.getzlaff at t-systems.com>).</li>
</ul>
<h3>Listeners</h3>
<ul>
<li><bug>64988</bug>Sort properties and variables in a human expected order for DebugPostProcessor and DebugSampler</li>
<li><bug>63061</bug>Sort View Results in Table in a human expected order</li>
<li><pr>706</pr>Try to keep UI responsive when displaying large text results. Can be configured with the new property
<code>view.results.tree.simple_view_limit</code></li>
</ul>
<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><pr>638</pr>Bolt Connection Configuration: added <code>ConnectionPoolMaxSize</code> parameter. Contributed by
David Pecollet (david.pecollet at gmail.com)</li>
<li><bug>65515</bug>Allow pooling of Prepared Statements in JDBC</li>
<li><bug>65299</bug>JSONPathAssertion attributes are out of order/Compare JSON objects and
not their string representations.</li>
</ul>
<h3>Report / Dashboard</h3>
<ul>
<li><bug>65353</bug>Make the estimator used for calculating percentiles on the dashboard configurable</li>
</ul>
<h3>General</h3>
<ul>
<li><bug>61805</bug><pr>663</pr>Add simple HTTP request template. Contributed by Ori Marko (orimarko at gmail.com)</li>
<li><bug>65611</bug><pr>673</pr>Add support for IPv6 addresses when specifying a remote worker node. Based on a patch by Peter Wong (peter.wong at csexperts.com)</li>
<li>Reduce memory consumption by the logging panel (disable undo events for it)</li>
<li><bug>63620</bug><pr>694</pr>Fix GUI freeze when viewing response body with long line breaks</li>
<li><pr>699</pr>Add documentation for Graphite Backend Listener. Contributed by Ji Hun (jihunkimkw at gmail.com)</li>
<li><bug>57672</bug><pr>700</pr>Add a switch (<code>jmeter.regex.engine</code>) to replace Oro Regex implementation by the built-in Java one.</li>
</ul>
<ch_section>Non-functional changes</ch_section>
<ul>
<li>Added Kotlin 1.6.21 for JMeter engine implementation (apiVersion=1.5). The set of JSR 223 languages is intact.</li>
<li><bug>65128</bug><pr>643</pr>Add missing documentation about <code>Same user on each iteration</code> for Thread Groups. Contributed by njkuzas.</li>
<li><pr>648</pr>Updated xmlgraphics-commons to 2.6 (from 2.3). Contributed by Stefan Seide (stefan at trilobyte-se.de)</li>
<li><pr>655</pr><pr>667</pr><pr>675</pr><pr>698</pr>Updated x-stream to 1.4.19 (from 1.4.15). Contributed by Stefan Seide (stefan at trilobyte-se.de)</li>
<li><pr>656</pr><pr>668</pr>Updated json-smart to 2.4.8 (from 2.3), accessors-smart to 2.4.8 (from 1.2) and asm 9.3 (from 9.0). Contributed by Stefan Seide (stefan at trilobyte-se.de)</li>
<li><bug>64831</bug>Log truststore entries in debug level for logger <code>org.apache.jmeter.util.keystore.JmeterKeyStore</code></li>
<li><bug>65232</bug>Hide splash screen when an error is displayed because the test plan could not be parsed.</li>
<li>Updated Groovy to 3.0.11 (from 3.0.7).</li>
<li>Updated Darklaf to 2.7.3 (from 2.5.4).</li>
<li>Updated Apache ActiveMQ to 15.6.4 (from 15.6.0).</li>
<li>Updated Asm to 9.2 (from 9.1).</li>
<li>Updated Bouncycastle to 1.70 (from 1.67).</li>
<li>Updated Caffeine to 2.9.3 (from 2.8.8).</li>
<li>Updated Apache commons-dbcp2 to 2.9.0 (from 2.8.0).</li>
<li>Updated Apache commons-io to 2.11.0 (from 2.8.0).</li>
<li>Updated Apache commons-lang3 to 3.12.0 (from 3.11).</li>
<li>Updated Apache commons-net to 3.8.0 (from 3.7.2).</li>
<li>Updated Apache commons-pool2 to 2.11.1 (from 2.9.0).</li>
<li>Updated equalsverifier to 3.10 (from 3.4.2).</li>
<li>Updated Apache Freemarker to 2.3.31 (from 2.3.30).</li>
<li>Updated hsqldb to 2.5.2 (from 2.5.0).</li>
<li>Updated Apache HttpClient to 4.5.13 (from 4.5.12).</li>
<li>Updated Apache HttpCore to 4.4.15 (from 4.4.13).</li>
<li>Updated jacoco to 0.8.7 (from 0.8.5).</li>
<li>Updated json-path to 2.7.0 (from 2.4.0).</li>
<li>Updated jsoup to 1.15.1 (from 1.13.1).</li>
<li>Updated JUnit to 4.13.2 and 5.8.2 (from 4.13.1 and 5.7.0).</li>
<li>Updated Apache log4j2 to 2.17.2 (from 2.13.3).</li>
<li>Updated Miglayout to 5.3 (from 5.2).</li>
<li>Updated Neo4j Java driver to 4.4.6 (from 4.2.0).</li>
<li>Updated Objenesis to 3.2 (from 2.6).</li>
<li>Updated ktlint to 0.40.0</li>
<li>Updated PH CSS and PH commons to 6.5.4 and 10.1.6 (from 6.2.3 and 9.5.1).</li>
<li>Updated RSyntaxTextArea to 3.2.0 (from 3.1.1).</li>
<li>Updated SLF4J to 1.7.36 (from 1.7.30).</li>
<li>Updated SvgSalamander to 1.1.2.4 (from 1.1.2.1).</li>
<li><pr>698</pr>Updated Apache Tika to 1.28.3 (from 1.26).</li>
<li>Updated WireMock-JRE8 to 2.30.0 (from 2.24.1).</li>
<li>Updated com.github.vlsi.vlsi-release-plugins 1.76 (from 1.74).</li>
<li>Updated jackson to 2.13.3 (from 2.10.5)</li>
<li>Updated jmespath to 0.5.1</li>
<li>Updated Saxon-HE to 11.2 (from 9.9.1-8)</li>
<li>Updated Apache xmlgraphics commons to 2.7 (from 2.6)</li>
<li><pr>671</pr>Move example definition of property <code>jmeter.reportgenerator.statistic_window</code>
to <code>user.properties</code>, as it is read from that place.
Contributed by Rithvik Patibandla (rithvikp98 at gmail.com)</li>
<li><bug>65456</bug>Updated commons-jexl 3 to 3.2.1 (from 3.1). Contributed by Ori Marko (orimarko at gmail.com>)</li>
<li><pr>654</pr>Try do give better feedback while loading keystores</li>
<li><pr>672</pr>Add more details to documentation for timeShift function. Contributed by Mariusz (mawasak at gmail.com)</li>
<li>Updated Gradle to 7.3 (from 7.2)</li>
<li><pr>689</pr>Code clean up in StringFromFile. Contributed by Sampath Kumar Krishnasamy (sampathkumar.krishnasamykuppusamy at aexp.com)</li>
<li><pr>690</pr>Refactor a few unit tests. Contributed by Sampath Kumar Krishnasamy (sampathkumar.krishnasamykuppusamy at aexp.com)</li>
<li><pr>692></pr>Fix a few deprecation warnings for Gradle. Contributed by Sampath Kumar Krishnasamy (sampathkumar.krishnasamykuppusamy at aexp.com)</li>
<li><pr>697></pr>Junit 5 tests to use asserts from Junit 5 API. Contributed by Sampath Kumar Krishnasamy (sampathkumar.krishnasamykuppusamy at aexp.com)</li>
<li><bug>65983</bug><pr>707</pr>Use current screenshot for save-to-file listener in documentation. Based on patch by NaveenKumar Namachivayam (catch.nkn at gmail.com)</li>
<li><pr>708</pr>Make errorprone happier. Based on patch by Wilson Kurniawan (wilson at visenze.com)></li>
<li>Updated Rhino JavaScript to 1.7.14 (from 1.7.13)</li>
</ul>
<!-- =================== Bug fixes =================== -->
<ch_section>Bug fixes</ch_section>
<h3>HTTP Samplers and Test Script Recorder</h3>
<ul>
<li><bug>65310</bug>Don't let users override <code>multipart/form-data</code> <code>content-type</code>
header in HC4 sampler.</li>
<li><bug>65363</bug><code>NullPointerException</code> in <code>HTTPHC4Impl$ManagedCredentialsProvider.getAuthorizationForAuthScope</code> when <code>401</code> response from remote and <code>httpclient4.auth.preemptive=false</code></li>
<li><bug>65692</bug>HTTP(s) Test Script Recorder: Enable setting enabled cipher suite and enabled protocols on SSLContext/ Align SSL properties between Java and HC4 implementation</li>
<li><bug>65108</bug>Support JMeter variables in <a href="./usermanual/component_reference.html#HTTP_Request">GraphQL HTTP Request</a></li>
<li><bug>65864</bug>Catch <code>NullPointerException</code> from JSoup when recording a test plan</li>
</ul>
<h3>Other Samplers</h3>
<ul>
<li><bug>65152</bug>OS Process Sampler &ndash; Cannot <code>Add from Clipboard</code> Command parameters</li>
<li><pr>638</pr>Bolt Sampler: fixed error displaying results when "Record Query Results" is enabled. Contributed by
David Pecollet (david.pecollet at gmail.com)</li>
</ul>
<h3>Controllers</h3>
<ul>
</ul>
<h3>Listeners</h3>
<ul>
<li><bug>64962</bug>Save CSV sub-results recursively from View Results Tree</li>
<li><bug>65784</bug>No Graphs displayed in Aggregate Report/Response Time Graph</li>
<li><bug>65884</bug>GUI doesn't display response for multipart request <em>manually</em> encoded</li>
</ul>
<h3>Timers, Assertions, Config, Pre- &amp; Post-Processors</h3>
<ul>
<li><bug>65257</bug>JMESPathExtractor writes error log entries if JMESPath filter returns empty result</li>
<li><bug>65259</bug>JMESPathExtractor Attribute <code>Match No.</code> Required</li>
<li><bug>65269</bug>JSON Extractor and JSON JMESPath Extractor ignore sub-samples</li>
<li><bug>65352</bug>Warning logged when Boundary Extractor doesn't find any match</li>
<li><bug>65681</bug>Use default values for <code>null</code> values when extracting with JSONPostProcessor</li>
<li>Allow setters in ConstantThroughputTimer to update the values during run time</li>
<li><bug>65782</bug>Use correct message format for MessageFormat in HTMLAssertion</li>
<li><bug>65794</bug>JSON Assertion always successful with indefinite paths</li>
</ul>
<h3>Functions</h3>
<ul>
</ul>
<h3>I18N</h3>
<ul>
</ul>
<h3>Report / Dashboard</h3>
<ul>
</ul>
<h3>Documentation</h3>
<ul>
<li><pr>658</pr>Improve javadoc. Contributed by Ori Marko (orimarko at gmail.com)</li>
</ul>
<h3>General</h3>
<ul>
<li><bug>64318</bug>DNS Cache Manager &ndash; custom DNS resolver does not use system resolver by default</li>
<li><pr>641</pr><pr>698</pr>Updated xercesImpl to 2.12.2 (from 2.12.0). Based on patch by Stefan Seide (stefan at trilobyte-se.de).</li>
<li><pr>645</pr>Add escaping for new lines in <code>AbstractInfluxdbMetricsSender</code>. Contributed by David Getzlaff (david.getzlaff at t-systems.com>)</li>
<li><bug>65198</bug>Can't copy generated function from FunctionHelper</li>
<li><pr>661</pr>Fix wording in doc. Contributed by BugKing (wangzhen at fit2cloud.com)</li>
<li><pr>664</pr>Allow whitespace in path. Contributed by Till Neunast (github.com/tilln)</li>
<li><bug>65270</bug>POST <code>application/x-www-form-urlencoded</code> cURL code generated from Postman is not imported correctly</li>
<li>Silence warnings of missing font Arial on startup under Linux</li>
<li><bug>65300</bug><code>IllegalAccessError</code> when opening file dialog with Java 16</li>
<li><bug>65336</bug>Blank labels when different elements had the same name</li>
<li><bug>65522</bug>Restart doesn't work, when parameters contain spaces</li>
<li><bug>63914</bug>Simplify <code>:src:dist:clean</code> configuration, ensure <code>/lib/junit/test.jar</code> is removed on clean</li>
<li><pr>696</pr>Keep JSyntaxTextArea text value for use in headless mode. Contributed by Peter Paul Bakker (peter.paul.bakker at stokpop.nl)</li>
</ul>
<!-- =================== Thanks =================== -->
<ch_section>Thanks</ch_section>
<p>We thank all contributors mentioned in bug and improvement sections above:
</p>
<ul>
<li>Stefan Seide (stefan at trilobyte-se.de)</li>
<li>njzukas (github.com/njzukas)</li>
<li>David Getzlaff (david.getzlaff at t-systems.com>)</li>
<li>Konstantin Kalinin (konstantin at kkalinin.pro)</li>
<li>David Pecollet (david.pecollet at gmail.com)</li>
<li>Ori Marko (orimarko at gmail.com)</li>
<li>BugKing (wangzhen at fit2cloud.com)</li>
<li>Till Neunast (github.com/tilln)</li>
<li>Baptiste Gaillard (baptiste.gaillard at gmail.com)</li>
<li>Rithvik Patibandla (rithvikp98 at gmail.com)</li>
<li>Mariusz (mawasak at gmail.com)</li>
<li>peter.wong@csexperts.com</li>
<li>Woonsan Ko (woonsan.ko at bloomreach.com)</li>
<li>Chromico Rek (atech5122 at gmail.com)</li>
<li>Magnus SpÄngdal (magnus.spangdal as avanza.se)</li>
<li>Piotr Smietana (piotrsmietana1998 at gmail.com)</li>
<li>Sampath Kumar Krishnasamy (sampathkumar.krishnasamykuppusamy at aexp.com)</li>
<li>Ji Hun (jihunkimkw at gmail.com)</li>
<li>Peter Paul Bakker (peter.paul.bakker at stokpop.nl)</li>
<li>NaveenKumar Namachivayam (catch.nkn at gmail.com)</li>
<li>Wilson Kurniawan (wilson at visenze.com)</li>
</ul>
<p>We also thank bug reporters who helped us improve JMeter.</p>
<ul>
<li>Nikola Aleksic (nalexic at gmail.com)</li>
<li>Vladimir Rosu (rosuvladimir at gmail.com)</li>
</ul>
<p>
Apologies if we have omitted anyone else.
</p>
<!-- =================== Known bugs or issues related to JAVA Bugs =================== -->
<ch_section>Known problems and workarounds</ch_section>
<ul>
<li>The Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified).</li>
<li>
The numbers that appear to the left of the green box are the number of active threads / total number of threads,
the total number of threads only applies to a locally run test, otherwise it will show <code>0</code> (see <bugzilla>55510</bugzilla>).
</li>
<li>
Note that under some windows systems you may have this WARNING:
<source>
java.util.prefs.WindowsPreferences
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
x80000002. Windows RegCreateKeyEx(&hellip;) returned error code 5.
</source>
The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore.
</li>
<li>
You may encounter the following error:
<source>java.security.cert.CertificateException: Certificates does not conform to algorithm constraints</source>
if you run a HTTPS request on a web site with a SSL certificate (itself or one of SSL certificates in its chain of trust) with a signature
algorithm using MD2 (like <code>md2WithRSAEncryption</code>) or with a SSL certificate with a size lower than 1024 bits.
This error is related to increased security in Java 8+.
<br></br>
To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing
the Java <code>jdk.certpath.disabledAlgorithms</code> property. Remove the MD2 value or the constraint on size, depending on your case.
<br></br>
This property is in this file:
<source>JAVA_HOME/jre/lib/security/java.security</source>
See <bugzilla>56357</bugzilla> for details.
</li>
<li>
Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers.
This is due to a known Java bug, see Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8065373" >JDK-8065373</a>
The fix is to use JDK8_u45 or later.
</li>
<li>
View Results Tree may fail to display some HTML code under HTML renderer, see <bugzilla>54586</bugzilla>.
This is due to a known Java bug which fails to parse "<code>px</code>" units in row/col attributes.
See Bug <a href="https://bugs.openjdk.java.net/browse/JDK-8031109" >JDK-8031109</a>
The fix is to use JDK9 b65 or later.
</li>
<li>
JTable selection with keyboard (<keycombo><keysym>SHIFT</keysym><keysym>up/down</keysym></keycombo>) is totally unusable with Java 7 on Mac OSX.
This is due to a known Java bug <a href="https://bugs.openjdk.java.net/browse/JDK-8025126" >JDK-8025126</a>
The fix is to use JDK 8 b132 or later.
</li>
<li>
Since Java 11 the JavaScript implementation <a href="https://openjdk.java.net/jeps/335">Nashorn has been deprecated</a>.
Java will emit the following deprecation warnings, if you are using JavaScript based on Nashorn.
<source>
Warning: Nashorn engine is planned to be removed from a future JDK release
</source>
To silence these warnings, add <code>-Dnashorn.args=--no-deprecation-warning</code> to your Java arguments.
That can be achieved by setting the enviroment variable <code>JVM_ARGS</code>
<source>
export JVM_ARGS="-Dnashorn.args=--no-deprecation-warning"
</source>
</li>
<li>
With Java 15 the JavaScript implementation <a href="https://openjdk.java.net/jeps/372">Nashorn has been removed</a>. To add back a JSR-223 compatible JavaScript engine you have two options:
<dl>
<dt>Use Mozilla Rhino</dt>
<dd>Copy <a href="https://github.com/mozilla/rhino/releases/download/Rhino1_7_14_Release/rhino-engine-1.7.14.jar">rhino-engine-1.7.14.jar</a> into <code>$JMETER_HOME/lib/ext</code>.</dd>
<dt>Use OpenJDK Nashorn</dt>
<dd>
The OpenJDK Nashorn implementation comes as a module. To use it, you will have to download it and add it to the module path. A hacky way to download the version 15.0 (or later) and its dependencies and set the module path is outlined below:
<source>
mkdir lib/modules
pushd lib/modules
wget https://repo1.maven.org/maven2/org/openjdk/nashorn/nashorn-core/15.3/nashorn-core-15.3.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm/9.2/asm-9.2.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.2/asm-commons-9.2.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.2/asm-util-9.2.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.2/asm-tree-9.2.jar
wget https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.2/asm-analysis-9.2.jar
popd
export JVM_ARGS="--module-path $PWD/lib/modules"
./bin/jmeter
</source>
</dd>
</dl>
</li>
</ul>
</section>
</body>
</document>