Installation and Upgrade > Installing ThingWorx > Installing Custom Extensions
Installing Custom Extensions
Starting with ThingWorx 10.0.0 and later, the platform runs with Apache Tomcat 11, based on the Jakarta EE 11 specification. Unlike earlier versions that supported javax.* packages, Tomcat 11 requires all extensions and web components to use the jakarta.* namespace.
If any ThingWorx custom extensions use javax.*, APIs will no longer function correctly in the ThingWorx 10.0 environment.
The table below lists a few use cases and solutions.
Use Case
Solution
Importing and installing custom extensions triggers the NoClassDefFoundError error.
Update the context tag in the Tomcat/conf/context.xml file. For more information, see CS439388.
Upgrading from previous versions (9.4.x, 9.5.x, 9.6.x, 9.7.x) to ThingWorx 10.0
We recommend that you rebuild or recompile your extensions and reinstall them on ThingWorx 10.0.
* 
You can execute the Javax to JakarteEE Migration Utility to scan and migrate references from javax.* to jakarta.*. For more information, see CS442261.
When developing custom extensions for ThingWorx, only integrate third-party JavaScript libraries when necessary. Before including a library in your extension, verify whether the ThingWorx Platform already provides the library. Including a duplicate or conflicting version can result in compatibility issues, especially when different versions of the same library are used. These conflicts may lead to unexpected behavior or application failures. To avoid such issues, use the libraries bundled with the ThingWorx Platform when possible. You can view the list of JavaScript libraries used by ThingWorx under Extensibility > Included JavaScript Libraries in the Composer Manage menu. For more information, see Importing Extensions.
Was this helpful?