Forum Discussion

Srikanth9864's avatar
Srikanth9864
New Contributor
2 months ago

TestComplete Support Plugin Compatibility Issue

Environment.
- TestComplete Support Jenkins Plugin version: 2.10
- Jenkins version: 2.555.1
- Java version: 21.0.7

 

This are Console logs generated once the build is completed.

[TestComplete] Test runner exit code: 0.

[TestComplete] [WARNING] Unable to publish test results (xml data is empty)

The TestComplete plugin throws a ClassNotFoundException for 
javax.xml.bind.DatatypeConverter when running on Java 21. 
This causes all TestComplete jobs to fail.

java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445)
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)

In the attached screen we are unable to view Graph and Test complete test results as previously.

10 Replies

    • Tony9's avatar
      Tony9
      Occasional Contributor

       

      how is this going? did SB resolve the problems? I hit this issue too. can someone share the progress here, thanks a lot.

      • Srikanth9864's avatar
        Srikanth9864
        New Contributor

        No the smartbear didn't solve it, it keep this issue as awaiting fix.

  • scot1967's avatar
    scot1967
    Icon for Champion Level 3 rankChampion Level 3

    Hi Srikanth9864, ๐Ÿ‘‹๐Ÿผ

    From my searches I think this is a known Java compatibility issue, not a TestComplete bug or misconfiguration.  However, a support ticket would be worth submitting to verify and make the support team aware of the problem.

    The short answer: Java 21 + TestComplete plugin 2.10 is a broken combination for result publishing. Java 17 is the safer choice until SmartBear ships a fix.

    For reference on the Java/JAXB compatibility issue: https://www.aviator.co/blog/java-version-upgrade/

    Which Java version is better, 17 or 21?

    Both are great, but Java 17 is an LTS release and thus the safer default for enterprise environments. Java 21 is also an LTS and includes more recent features like virtual threads. Choose based on your support needs and plan.

    For SmartBear's current Jenkins integration requirements: https://support.smartbear.com/testcomplete/docs/working-with/integration/jenkins/index.html

    ... If you find my posts helpful drop me a Like๐Ÿ‘ Be sure to mark the post as the Solutionโœ… when you get one to help others out and to credit the one who helped you. ๐Ÿ˜Ž

  • siho's avatar
    siho
    Regular Visitor

    I fixed this for us by replacing the deprecated JAXB DatatypeConverter with java.time. Until they provide an official fix, you can give it a try:

  • GiorgiNiavadze's avatar
    GiorgiNiavadze
    Occasional Contributor

    TC Plugin 2.10 on Java 21 ClassNotFoundException:javax.xml.bind.DatatypeConverter blocks result pub

     

    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). 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.

     

     

     

    [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:

     

    Is there an ETA for an official plugin fix that removes the JAXB dependency?

    Is there a supported interim workaround?

    Can SmartBear confirm/validate the community patch posted by siho in this thread

     

    (replacing DatatypeConverter with java.time) as safe for production use?

     

     

     

    • Alex3's avatar
      Alex3
      New Contributor

      Workaround provided by siho works. You can manually change TestComplete plugin, if you don't want to download some random plugin from Internet.

      Please see screenshot.

      1. go to <jenkins path> - plugins - TestComplete
      2. Add dependencies to pom.xml file
      3. Download 2 jar libraries
      4. Restart jenkins
  • GiorgiNiavadze's avatar
    GiorgiNiavadze
    Occasional Contributor

    Alex3โ€‹  This workaround is understandable, but isn't smartbear planning to fix this bug directly in the testcomplete test plugin for Jenkins?