Support Article
NoClassDefFoundError when data pages are run
SA-47466
Summary
NoClassDefFoundError occurs when data pages sourced form REST connections are run. However, they work in other environments with the same rules and the end points are reachable through other systems.
Error Messages
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.apache.http.conn.ssl.DefaultHostnameVerifier.<init>(DefaultHostnameVerifier.java:72) ~[httpclient-4.5.2.jar:?]
at org.apache.http.conn.ssl.DefaultHostnameVerifier.<init>(DefaultHostnameVerifier.java:81) ~[httpclient-4.5.2.jar:?]
at com.pega.pegarules.integration.engine.internal.client.rest.ComponentsRESTClient.applySSLSocketFactory(ComponentsRESTClient.java:894) ~[printegrint.jar:?]
at com.pega.pegarules.integration.engine.internal.client.rest.ComponentsRESTClient.getHttpClient(ComponentsRESTClient.java:920) ~[printegrint.jar:?]
at com.pega.pegarules.integration.engine.internal.client.rest.ComponentsRESTClient.invokeRESTClient(ComponentsRESTClient.java:196) ~[printegrint.jar:?]
at com.pega.pegarules.integration.engine.internal.connect.rest.RESTConnector.invokeREST(RESTConnector.java:1545) ~[printegrint.jar:?]
at com.pega.pegarules.integration.engine.internal.connect.rest.RESTConnector.executeRequest(RESTConnector.java:1982) ~[printegrint.jar:?]
Steps to Reproduce
Run a data page which is sourced from a REST connection.
Root Cause
A defect or configuration issue in the operating environment. A class conflict was created when a jar file was imported using the Import Wizard. This was found by navigating to SMA > Advanced > ETier Runtime Environment and looking up the mentioned class: org.apache.commons.logging.LogFactory.
A working system retrieved this class from pegajdbc://481445514:0/commons-logging-1.2.jar. However, the system on which the error occurred, referenced a different jar file that is not provided out-of-the-box.
Resolution
Perform the following local-change:Delete the imported jar from the database using the following query:
delete from <your_rules_schema>.pr_engineclasses where pzjar = 'your_jar';
Published April 26, 2018 - Updated December 2, 2021
Have a question? Get answers now.
Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.