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
Review DTK build logs
Look for errors referencing:javax.xml.bindDatatypeConverterpackage does not exist error: package javax.xml.bind does not existSearch custom extension code
Check for imports such as:import javax.xml.bind.DatatypeConverter;
Verify the JDK version used by DTK
java -version
- 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
Product Synonym
IBM OMoC, IBM Order Management on Cloud, IBM Order Management
Was this topic helpful?
Document Information
Modified date:
18 February 2026
UID
ibm17261161