Support Article
BIX failure due to occasional NoClassDefFoundError
SA-34496
Summary
BIX command line process fails with the exception java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider. This behavior is sproadic, and results in failures in the extraction process.
Error Messages
com.pega.pegarules.boot.internal.extbridge.AppServerBridgeToPega
SEVERE: Problem during method invocation (main)
java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider
at com.pega.pegarules.exec.internal.PRExecProviderImpl.getCrypto(PRExecProviderImpl.java:389)
at com.pega.pegarules.deploy.internal.archive.ParUtilsImpl.<clinit>(ParUtilsImpl.java:165)
at com.pega.pegarules.deploy.internal.PRDeployProviderImpl.getParUtils(PRDeployProviderImpl.java:98)
at com.pega.pegarules.session.internal.engineinterface.etier.impl.EngineStartup.initEngine(EngineStartup.java:511)
at com.pega.pegarules.session.internal.engineinterface.etier.impl.EngineImpl._initEngine_privact(EngineImpl.java:165)
at com.pega.pegarules.session.internal.engineinterface.etier.impl.EngineImpl.doStartup(EngineImpl.java:138)
at com.pega.pegarules.session.internal.mgmt.EngineImpl.startEngineImpl(EngineImpl.java:240)
at com.pega.pegarules.session.internal.mgmt.EngineImpl.startEngine(EngineImpl.java:119)
at com.pega.pegarules.session.internal.mgmt.EngineImpl.startEngine(EngineImpl.java:112)
at com.pega.pegarules.data.internal.access.ExtractImpl.main(ExtractImpl.java:1027)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethod(PRBootstrap.java:367)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethodPropagatingThrowable(PRBootstrap.java:408)
at com.pega.pegarules.boot.internal.extbridge.AppServerBridgeToPega.invokeMethodPropagatingThrowable(AppServerBridgeToPega.java:22\
3)
at com.pega.pegarules.boot.internal.extbridge.AppServerBridgeToPega.invokeMethod(AppServerBridgeToPega.java:272)
at com.pega.pegarules.pub.PegaRULES.main(PegaRULES.java:85)
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.jce.provider.BouncyCastleProvider
at com.pega.pegarules.internal.bootstrap.phase2.PRBaseLoader.findClass(PRBaseLoader.java:312)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at com.pega.pegarules.internal.bootstrap.phase2.PRBaseLoader.loadClass(PRBaseLoader.java:237)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at com.pega.pegarules.bootstrap.loader.PRAppLoader.loadClass(PRAppLoader.java:772)
at com.pega.pegarules.bootstrap.loader.PRAppLoader.loadClass(PRAppLoader.java:649)
... 19 more
Exception in thread "main" java.lang.RuntimeException: Problem during method invocation (main)
at com.pega.pegarules.boot.internal.extbridge.AppServerBridgeToPega.invokeMethod(AppServerBridgeToPega.java:278)
Similar error is thrown for another Pega supplied jar:
Caused by: java.lang.ClassNotFoundException: net.sf.saxon.TransformerFactoryImpl
at com.pega.pegarules.internal.bootstrap.phase2.PRBaseLoader.findClass(PRBaseLoader.java:312)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at com.pega.pegarules.internal.bootstrap.phase2.PRBaseLoader.loadClass(PRBaseLoader.java:237)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at com.pega.pegarules.bootstrap.loader.PRAppLoader.loadClass(PRAppLoader.java:772)
at com.pega.pegarules.bootstrap.loader.PRAppLoader.loadClass(PRAppLoader.java:649)
Steps to Reproduce
Run BIX extraction from command line.
Root Cause
A defect or configuration issue in the operating environment
The class files that are not found in the above exceptions are part of the Pega database and are extracted on the local filesystem of BIX execution during runtime.
net.sf.saxon.TransformerFactoryImpl is part of /ExtractedFiles/apploader/saxon9he.jar
and
org/bouncycastle/jce/provider/BouncyCastleProvider is part of /extractedFiles/baseloader/java6/bcprov-jdk15on-149.jar.
The folder "extractedFiles" is created on the filesystem relative to the location given in prbootstrap.properties for "com.pega.pegarules.bootstrap.tempdir" property.
Resolution
Perform the following local-change: Make sure multiple BIX processes use unique values for "com.pega.pegarules.bootstrap.tempdir" property. The issue occurs when multiple BIX processes are run concurrently and are trying to access the same "com.pega.pegarules.bootstrap.tempdir" location.
Published March 10, 2017 - Updated October 8, 2020
Have a question? Get answers now.
Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.