NoClassDefFoundError of asyncexecutor in Clustor Environment

Hi, we have integrated flowable (6.4.2) in our application and we need to implement a reminder feature in our workflow using boundaryTimer Event:
The bpmn:
ScreenHunter 960 Apr. 14 09.59
The JavaDelegate:


We’ve tested that in Development Single Machine Environment, the JavaDelegate works properly.
But, after deploying to our Testing Cluster Environment, there’s exception when it tries to acquire jobs runnable (Shown below). Can you explain possible reasons or any configuration I missed? Thanks!

AcquireTimerJ E org.flowable.job.service.impl.asyncexecutor.AcquireTimerJobsRunnable run exception during timer job acquisition: org.apache.commons.lang3.StringUtils

                             java.lang.NoClassDefFoundError: org.apache.commons.lang3.StringUtils
    at org.flowable.job.service.impl.persistence.entity.AbstractJobEntityImpl.setExceptionMessage(AbstractJobEntityImpl.java:330)
    at org.flowable.job.service.impl.asyncexecutor.DefaultJobManager.copyJobInfo(DefaultJobManager.java:603)
    at org.flowable.job.service.impl.asyncexecutor.DefaultJobManager.createExecutableJobFromOtherJob(DefaultJobManager.java:558)
    at org.flowable.job.service.impl.asyncexecutor.DefaultJobManager.moveTimerJobToExecutableJob(DefaultJobManager.java:131)
    at org.flowable.job.service.impl.asyncexecutor.AcquireTimerJobsRunnable$1.execute(AcquireTimerJobsRunnable.java:65)
    at org.flowable.job.service.impl.asyncexecutor.AcquireTimerJobsRunnable$1.execute(AcquireTimerJobsRunnable.java:60)
    at org.flowable.engine.impl.interceptor.CommandInvoker$1.run(CommandInvoker.java:51)
    at org.flowable.engine.impl.interceptor.CommandInvoker.executeOperation(CommandInvoker.java:93)
    at org.flowable.engine.impl.interceptor.CommandInvoker.executeOperations(CommandInvoker.java:72)
    at org.flowable.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:56)
    at org.flowable.engine.impl.interceptor.BpmnOverrideContextInterceptor.execute(BpmnOverrideContextInterceptor.java:25)
    at org.flowable.common.engine.impl.interceptor.TransactionContextInterceptor.execute(TransactionContextInterceptor.java:53)
    at org.flowable.common.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:72)
    at org.flowable.common.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:30)
    at org.flowable.common.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:56)
    at org.flowable.common.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:51)
    at org.flowable.job.service.impl.asyncexecutor.AcquireTimerJobsRunnable.run(AcquireTimerJobsRunnable.java:60)
    at java.lang.Thread.run(Thread.java:785)

Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang3.StringUtils
at java.net.URLClassLoader.findClass(URLClassLoader.java:609)
at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:243)
at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:850)
at java.lang.ClassLoader.loadClass(ClassLoader.java:829)
at com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:809)
at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:62)
at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:58)
at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:586)
at java.lang.ClassLoader.loadClass(ClassLoader.java:809)
at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:586)
at java.lang.ClassLoader.loadClass(ClassLoader.java:809)
… 18 more

The apache commons-lang3 jar doesn’t seem to be on the classpath of that node. How are you running / deploying that other node? That dependency should come with the default set of dependencies of Flowable when using Maven for example.

@joram Thanks for the information. This issue is resolved as we double check the maven dependencies.