Next Practical Step
Read the SAXParseException line number from jmeter.log, inspect that region of the JMX, and restore from git if more than a few lines are damaged.
Fix JMeter test plans that won't open: Error loading test plan, XML parse errors, merge conflict markers, and version mismatches, with recovery steps.
Opening a .jmx file shows a dialog or log entry such as:
Error loading test planwith an XML parse detail like:
org.xml.sax.SAXParseException: The element type "HTTPSamplerProxy" must be terminated by the matching end-tag "</HTTPSamplerProxy>".Other variants open the GUI but show an empty or partially built test plan, or log unknown-element warnings during load.
A JMX file is XML, so load errors mean either the XML is malformed (interrupted save, manual edit, or git merge conflict markers) or JMeter cannot construct an element it finds (missing plugin JARs or a newer JMeter version). Repair the XML first, then check plugins and versions.
| Cause | Specific Error | Why it happens |
|---|---|---|
| Interrupted save | Truncated file, abrupt SAXParseException | A crash or full disk stopped the write mid-file |
| Git merge conflict markers | Parse error at <<<<<<< | Merging left conflict markers inside the XML |
| Manual hand edit | Tag mismatch errors | A text edit broke tag nesting or escaping |
| Missing plugin JARs | Unknown element warnings, missing samplers | The plan references elements whose classes are not installed |
| Version mismatch | Plan loads partially or with warnings | A newer JMeter wrote features an older JMeter does not know |
Open jmeter.log after the failed load. The SAXParseException carries a line and column number, which points straight at the broken region of the file.
Open the JMX in a text editor and check:
<<<<<<<, =======, and >>>>>>>. Remove them and keep the correct element.</jmeterTestPlan>. If it stops mid-tag, the save was interrupted.If the file is truncated or badly mangled, restoration beats hand repair:
# Compare against the last committed versiongit diff HEAD -- path/to/plan.jmx
# Restore the committed copygit checkout HEAD -- path/to/plan.jmxKeep test plans in git going forward; JMeter has no built-in autosave, so version control is the recovery mechanism.
If the XML is valid but elements are missing after load:
jmeter.log.lib/ext/, following ClassNotFound & Missing JARs.The JMX header records which version wrote it:
<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.6.3">If the jmeter attribute is newer than your installation, open the plan with that version (or newer) and re-save it, or upgrade your installation. Newer JMeter reads older plans without trouble; the reverse direction is where load errors appear.
| Resource | Use when |
|---|---|
| ClassNotFound & Missing JARs | Elements fail to construct because plugin JARs are missing |
| GUI works, CLI fails | The plan loads but the CLI run misbehaves |
| Building a Test Plan | Saving and organizing plans safely |
| Hints and Tips | General test plan hygiene |
Often, yes. If the damage is a truncated tail or merge conflict markers, fixing the XML by hand restores the plan. When whole sections are missing, restoring from git or a backup is faster and safer than reconstruction.
Version or plugin differences. Check the jmeter attribute in the JMX header against your installed version, and compare the contents of lib/ext/ for plugin JARs the plan depends on.
In jmeter.log. The SAXParseException line names the problem and includes line and column numbers, which map directly to a position in the JMX file.
Save before large edits, keep plans in git so merges are visible and reversible, and avoid hand-editing the XML without an editor that validates well-formedness. Committing after each meaningful change keeps the last-good version close.