TC Plugin 2.10 on Java 21 ClassNotFoundException:javax.xml.bind.DatatypeConverter blocks result pub
TestComplete Jenkins Plugin 2.10 on Java 21 — ClassNotFoundException: javax.xml.bind.DatatypeConverter blocks all result publishing
Environment:
- TestComplete Jenkins Plugin: 2.10
- Jenkins: 2.555.2
- Agent Java: Eclipse Temurin 21.0.11 (JNLP inbound agent)
- Controller Java: 21.0.5
- TestExecute: 15.82.62.11 / TestComplete: 15.83.1.7 (both updated to latest, no change in behavior)
Issue:
Confirming the same issue already reported in this thread and in the related idea
(community.smartbear.com/idea/.../280452).
TestComplete Support Plugin Compatibility Issue | SmartBear Community
The TestComplete/TestExecute test run
completes successfully — exit code 0, and I personally watched the run finish
correctly on the node — but the Jenkins build still fails at the results-publishing
stage with:
[TestComplete] [WARNING] Unable to publish test results (xml data is empty).
FATAL: javax/xml/bind/DatatypeConverter
java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
Caused: java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
at PluginClassLoader for TestComplete//com.smartbear.jenkins.plugins.testcomplete.parser.LogNodeUtils.startTimeToTimestamp(LogNodeUtils.java:425)
at PluginClassLoader for TestComplete//com.smartbear.jenkins.plugins.testcomplete.parser.LogParser2.convertSummaryToXML(LogParser2.java:216)
at PluginClassLoader for TestComplete//com.smartbear.jenkins.plugins.testcomplete.parser.LogParser2.parse(LogParser2.java:278)
at PluginClassLoader for TestComplete//com.smartbear.jenkins.plugins.testcomplete.TcTestBuilder.processFiles(TcTestBuilder.java:1108)
This is 100% reproducible on every build regardless of test content, confirming the
root cause is the plugin's log-to-XML summary step (LogNodeUtils.startTimeToTimestamp)
calling a JAXB class that was removed from the JDK itself starting with Java 11 (JEP 320).
Already ruled out:
- Not a TestComplete/TestExecute version issue — updated both to latest 15.82.x, same result.
- Not fixable via the job-level "JDK" tool selection — that only sets PATH/JAVA_HOME for
build steps, it doesn't change the JVM already running the Jenkins process.
- Not fixable by running on Java 17 instead — javax.xml.bind was already removed as of
Java 11, so 17 has the same problem; and in any case Jenkins 2.555.x requires Java 21
or 25 on both controller and agent JVMs, so downgrading isn't an option for us.
Jenkins Console log:
[TestComplete] The test execution started (LMS/LMS). [TestComplete] Found TestComplete/TestExecute installations: Type: TE, Version: 15.82.62.11, Path: "C:\Program Files (x86)\SmartBear\TestExecute 15\x64\bin\TestExecute.exe" Type: TELite, Version: 15.82.62.50, Path: "C:\Program Files (x86)\SmartBear\TestExecuteLite 15\x64\bin\TestExecuteLite.exe" [TestComplete] Selected TestComplete/TestExecute installation: Type: TE, Version: 15.82.62.11, Path: "C:\Program Files (x86)\SmartBear\TestExecute 15\x64\bin\TestExecute.exe" [TestComplete] [WARNING] The node is connected via Java Web Start (JNLP). In this mode, the "Run interactive user session" property of the TestComplete Test step is ignored. TestComplete (or TestExecute) will work in the current user session. [TestComplete] Launching the test runner. $ '"C:\Program Files (x86)\SmartBear\TestExecute 15\x64\bin\SessionCreator.exe"' ExecuteProcess '/c:""C:\Program Files (x86)\SmartBear\TestExecute 15\x64\bin\TestExecute.exe"" "C:\JenkinsAgent\workspace\Production\RegressTest\LMS\LMS_RegressTest01\LMS.pjs" /run /accesskey:******** /SilentMode /ForceConversion /ns /exit "/ExportLog:C:\JenkinsAgent\workspace\Production\RegressTest\LMS\LMS_RegressTest01\1783430886140.tclogx" "/ExportLog:C:\JenkinsAgent\workspace\Production\RegressTest\LMS\LMS_RegressTest01\1783430886140.htmlx" "/ErrorLog:C:\JenkinsAgent\workspace\Production\RegressTest\LMS\LMS_RegressTest01\1783430886140.txt" "/ExportLog:C:\JenkinsAgent\workspace\Production\RegressTest\LMS\LMS_RegressTest01\1783430886140.mht" "/project:LMS" /DoNotShowLog /JenkinsTCPluginVersion:2.10' [TestComplete] Test runner exit code: 0. [TestComplete] [WARNING] Unable to publish test results (xml data is empty). FATAL: javax/xml/bind/DatatypeConverter java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter Caused: java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter at PluginClassLoader for TestComplete//com.smartbear.jenkins.plugins.testcomplete.parser.LogNodeUtils.startTimeToTimestamp(LogNodeUtils.java:425) at PluginClassLoader for TestComplete//com.smartbear.jenkins.plugins.testcomplete.parser.LogParser2.convertSummaryToXML(LogParser2.java:216) at PluginClassLoader for TestComplete//com.smartbear.jenkins.plugins.testcomplete.parser.LogParser2.parse(LogParser2.java:278) at PluginClassLoader for TestComplete//com.smartbear.jenkins.plugins.testcomplete.TcTestBuilder.processFiles(TcTestBuilder.java:1108) at PluginClassLoader for TestComplete//com.smartbear.jenkins.plugins.testcomplete.TcTestBuilder.performInternal(TcTestBuilder.java:799) at PluginClassLoader for TestComplete//com.smartbear.jenkins.plugins.testcomplete.TcTestBuilder.perform(TcTestBuilder.java:568) at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123) at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:79) at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:817) at hudson.model.Build$BuildExecution.build(Build.java:199) at hudson.model.Build$BuildExecution.doRun(Build.java:164) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:526) at hudson.model.Run.execute(Run.java:1842) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:44) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:456)
Questions:
1. Is there an ETA for an official plugin fix that removes the JAXB dependency?
2. Is there a supported interim workaround?
3. Can SmartBear confirm/validate the community patch posted by siho in this thread
(replacing DatatypeConverter with java.time) as safe for production use?
Happy to share the full console log or additional screenshots on request.