IBM Support

IBM Sterling OMS DTK Build Failure on JDK 21 Due to Removed JAXB APIs

Troubleshooting


Problem

When importing or building custom IBM Sterling Order Management System (OMS) extensions using the Development Toolkit (DTK), the build fails on JDK 21 with errors indicating that the package javax.xml.bind does not exist.

Symptom

During compilation of custom Java files referenced through devtoolkit_extensions.xml, the following error appears:

error: package javax.xml.bind does not exist
[javac] import javax.xml.bind.DatatypeConverter;

 

The build stops during DTK’s traversal of custom extensions.

 

Cause

The failure occurs because certain custom Java classes import javax.xml.bind.DatatypeConverter, which belonged to JAXB. JAXB was bundled with Java SE up to JDK 8 but was removed from the Java platform starting in JDK 11.Therefore, when the environment is upgraded from JDK 8 to JDK 21, these imports no longer resolve, resulting in compilation failure.

DTK compiles custom code using the project classpath defined under the OMS Development Toolkit directory (e.g., ${projectdir}/lib). Since JAXB is not included in JDK 21 and is not shipped within the project libraries, code that references it will fail to compile.

 

Environment

  • IBM Sterling Order Management System (OMS)
  • Development Toolkit (DTK) extension build/import process
  • Running JDK 21.0.7
  • Custom Java classes referencing javax.xml.bind
  • Typical upgrade path: JDK 8 → JDK 21
  • Similar issues may also be encountered in OMoC (Order Management on Cloud) environments running on JDK 21, particularly if custom implementations invoke paths that rely on older JAXB-based classes.

 

Diagnosing The Problem

  1. Review DTK build logs
    Look for errors referencing:

    javax.xml.bindDatatypeConverterpackage does not exist   
    error: package javax.xml.bind does not exist 
  2. Search custom extension code
    Check for imports such as:

    import javax.xml.bind.DatatypeConverter;    
  3. Verify the JDK version used by DTK
     

    java -version    
  4. Compare with previous environment
    If this build worked with JDK 8 but fails on JDK 21, the missing JAXB APIs are the likely cause.

 

Resolving The Problem

Recommended Solution — Update Custom Code to Use Modern Java APIs

Replace the removed JAXB DatatypeConverter class with the native Java Base64 APIs introduced in Java 8 and supported through JDK 21.

Old (JDK 8 JAXB‑based) Code:

import javax.xml.bind.DatatypeConverter;String encoded = DatatypeConverter.printBase64Binary(data);byte[] decoded = DatatypeConverter.parseBase64Binary(input);

 

Updated (Java 8–21 Compatible) Code:

import java.util.Base64;String encoded = Base64.getEncoder().encodeToString(data);byte[] decoded = Base64.getDecoder().decode(input);

 

This update removes the dependency on JAXB and ensures compatibility with modern Java versions.
The implementation team should review and validate the updated logic to confirm that it meets all business requirements.

Addressing these updates proactively will help ensure a smooth transition to JDK 21 across DTK and OMoC environments and prevent similar issues during future builds or runtime flows.

 

Document Location

Worldwide

[{"Type":"MASTER","Line of Business":{"code":"LOB77","label":"Automation Platform"},"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSGTJF","label":"IBM Sterling Order Management System"},"ARM Category":[{"code":"a8m0z000000cxzWAAQ","label":"Install and Deploy"},{"code":"a8m0z000000cxzbAAA","label":"SaaS Components"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"and future releases"}]

Product Synonym

IBM OMoC, IBM Order Management on Cloud, IBM Order Management

Document Information

Modified date:
18 February 2026

UID

ibm17261161