Skip to content

[Bug]: java.lang.ClassNotFoundException: org.apache.commons.lang.StringEscapeUtils #348

Description

@juluanb

Jenkins Version

2.579

JTE Version

2.5.5

Bug Description

An error occurs when running a pipeline job, using the template engine:

Relevant log output

[JTE] -- file path: ci/pipeline_config.groovy
java.lang.ClassNotFoundException: org.apache.commons.lang.StringEscapeUtils
Caused: java.lang.NoClassDefFoundError: org/apache/commons/lang/StringEscapeUtils
	at PluginClassLoader for templating-engine//org.boozallen.plugins.jte.init.governance.config.dsl.PipelineConfigurationDsl$_printBlock_closure1.doCall(PipelineConfigurationDsl.groovy:130)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	at java.base/java.lang.reflect.Method.invoke(Method.java:565)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
	at groovy.lang.Closure.call(Closure.java:420)
	at org.codehaus.groovy.runtime.DefaultGroovyMethods.callClosureForMapEntry(DefaultGroovyMethods.java:5361)
	at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2202)
	at org.codehaus.groovy.runtime.dgm$164.invoke(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoMetaMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:251)
	at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:71)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:58)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)
	at PluginClassLoader for templating-engine//org.boozallen.plugins.jte.init.governance.config.dsl.PipelineConfigurationDsl.printBlock(PipelineConfigurationDsl.groovy:107)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	at java.base/java.lang.reflect.Method.invoke(Method.java:565)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:352)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
	at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:68)
	at PluginClassLoader for templating-engine//org.boozallen.plugins.jte.init.governance.config.dsl.PipelineConfigurationDsl$_printBlock_closure1.doCall(PipelineConfigurationDsl.groovy:120)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	at java.base/java.lang.reflect.Method.invoke(Method.java:565)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
	at groovy.lang.Closure.call(Closure.java:420)
	at org.codehaus.groovy.runtime.DefaultGroovyMethods.callClosureForMapEntry(DefaultGroovyMethods.java:5361)
	at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2202)
	at org.codehaus.groovy.runtime.dgm$164.invoke(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:274)
	at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:56)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:76)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)
	at PluginClassLoader for templating-engine//org.boozallen.plugins.jte.init.governance.config.dsl.PipelineConfigurationDsl.printBlock(PipelineConfigurationDsl.groovy:107)
	at org.boozallen.plugins.jte.init.governance.config.dsl.PipelineConfigurationDsl$printBlock$1.callCurrent(Unknown Source)
	at PluginClassLoader for templating-engine//org.boozallen.plugins.jte.init.governance.config.dsl.PipelineConfigurationDsl.serialize(PipelineConfigurationDsl.groovy:101)
	at org.boozallen.plugins.jte.init.governance.config.dsl.PipelineConfigurationDsl$serialize$0.call(Unknown Source)
	at PluginClassLoader for templating-engine//org.boozallen.plugins.jte.init.governance.config.dsl.PipelineConfigurationObject.plus(PipelineConfigurationObject.groovy:59)
	at org.boozallen.plugins.jte.init.governance.config.dsl.PipelineConfigurationObject$plus.call(Unknown Source)
	at PluginClassLoader for templating-engine//org.boozallen.plugins.jte.init.PipelineConfigurationAggregator.aggregate(PipelineConfigurationAggregator.groovy:58)
	at org.boozallen.plugins.jte.init.PipelineConfigurationAggregator$aggregate.call(Unknown Source)
	at PluginClassLoader for templating-engine//org.boozallen.plugins.jte.job.TemplateFlowDefinition.create(TemplateFlowDefinition.groovy:77)
	at PluginClassLoader for workflow-job//org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:342)
	at hudson.model.ResourceController.execute(ResourceController.java:97)
	at hudson.model.Executor.run(Executor.java:456)

Steps to Reproduce

This error occurs because Jenkins has removed the obsolete Apache Commons Lang 2 library (org.apache.commons.lang.*) from the core system. Meanwhile, the Jenkins Templating Engine (JTE) plugin attempts to use the legacy StringEscapeUtils class (which has since been replaced in recent libraries by Commons Text or Commons Lang 3).
Thus any pipeline job relying on the template engine may be concerned by this issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions