A Job fails to run on a remote JobServer

Symptoms

A Job fails to run on a remote JobServer with the following error message:

 

Exception in thread "Thread-5" java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.JavaType.isReferenceType()Z 
at com.fasterxml.jackson.databind.deser.BasicDeserializerFactory.findDefaultDeserializer(BasicDeserializerFactory.java:1522) 
at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.findStdDeserializer(BeanDeserializerFactory.java:167) 
at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:132) 
at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer2(DeserializerCache.java:403) 
at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer(DeserializerCache.java:352) 
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:264) 
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:244) 
at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142) 
at com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:461) 
at com.fasterxml.jackson.databind.ObjectMapper._findRootDeserializer(ObjectMapper.java:3804) 
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3698) 
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2667) 
at com.amazonaws.internal.config.InternalConfig.loadfrom(InternalConfig.java:236) 
at com.amazonaws.internal.config.InternalConfig.load(InternalConfig.java:249) 
at com.amazonaws.internal.config.InternalConfig$Factory.<clinit>(InternalConfig.java:304) 
at com.amazonaws.util.VersionInfoUtils.userAgent(VersionInfoUtils.java:139) 
at com.amazonaws.util.VersionInfoUtils.initializeUserAgent(VersionInfoUtils.java:134) 
at com.amazonaws.util.VersionInfoUtils.getUserAgent(VersionInfoUtils.java:95) 
at com.amazonaws.ClientConfiguration.<clinit>(ClientConfiguration.java:61) 
at com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:397) 
at etl.rob_phase2_testing_0_1.Rob_Phase2_Testing.tS3Put_1Process(Rob_Phase2_Testing.java:39086) 
at etl.rob_phase2_testing_0_1.Rob_Phase2_Testing.tLibraryLoad_5Process(Rob_Phase2_Testing.java:38947) 
at etl.rob_phase2_testing_0_1.Rob_Phase2_Testing.tJava_57Process(Rob_Phase2_Testing.java:38753) 
at etl.rob_phase2_testing_0_1.Rob_Phase2_Testing.tRunJob_6Process(Rob_Phase2_Testing.java:38562) 
at etl.rob_phase2_testing_0_1.Rob_Phase2_Testing.tJava_55Process(Rob_Phase2_Testing.java:40698) 
at etl.rob_phase2_testing_0_1.Rob_Phase2_Testing.tLoop_15Process(Rob_Phase2_Testing.java:40450) 
at etl.rob_phase2_testing_0_1.Rob_Phase2_Testing.tJava_34Process(Rob_Phase2_Testing.java:40111) 
at etl.rob_phase2_testing_0_1.Rob_Phase2_Testing.tLoop_14Process(Rob_Phase2_Testing.java:39532) 
at etl.rob_phase2_testing_0_1.Rob_Phase2_Testing$15.run(Rob_Phase2_Testing.java:45300)

 

Diagnosis

The Job runs well when executed locally in Talend Studio, but fails to run from a remote JobServer. This issue occurs when different versions of the same JAR file are being used with components in the Job. In the error message above, different versions of the jackson-databind.jar file are being used with multiple components (exported as part of build Job deployment) in the JAR file, which is causing the issue.

 

When you build the Job, the following libraries can be found in the lib directories for the Job:

 

-rw-r--r-- 1 Rob staff 167761 6 Jul 2016 antlr-runtime-3.5.2.jar 
-rw-r--r-- 1 Rob staff 31019060 24 Jan 2017 aws-java-sdk-1.10.52-6.0.0.jar 
-rwxr-xr-x 1 Rob staff 31019060 24 Jan 2017 aws-java-sdk-1.10.52.jar 
-rw-r--r-- 1 Rob staff 3052 21 Sep 09:55 aws-java-sdk-1.11.119.jar 
-rw-r--r-- 1 Rob staff 585172 21 Sep 09:55 aws-java-sdk-core-1.10.56.jar 
-rw-r--r-- 1 Rob staff 841895 21 Sep 09:55 aws-java-sdk-core-1.11.119.jar 
-rw-r--r-- 1 Rob staff 612444 21 Sep 09:55 aws-java-sdk-core-1.11.13.jar 
-rw-r--r-- 1 Rob staff 608533 21 Sep 09:55 aws-java-sdk-s3-1.10.56.jar 
-rw-r--r-- 1 Rob staff 767973 21 Sep 09:55 aws-java-sdk-s3-1.11.119.jar 
-rw-r--r-- 1 Rob staff 637604 21 Sep 09:55 aws-java-sdk-s3-1.11.13.jar 
-rw-r--r-- 1 Rob staff 232771 6 Mar 2017 commons-codec-1.6.jar 
-rw-r--r-- 1 Rob staff 259600 11 Apr 16:12 commons-codec-1.7.jar 
-rw-r--r-- 1 Rob staff 185140 11 Apr 16:12 commons-io-2.4.jar 
-rw-r--r-- 1 Rob staff 434678 30 Aug 15:00 commons-lang3-3.4.jar 
-rw-r--r-- 1 Rob staff 62050 6 Mar 2017 commons-logging-1.1.3.jar 
-rw-r--r-- 1 Rob staff 158448 5 May 09:59 commons-logging-1.2-javadoc.jar 
-rw-r--r-- 1 Rob staff 61829 3 Mar 2017 commons-logging-1.2.jar 
-rw-r--r-- 1 Rob staff 190098 11 Apr 16:12 commons-validator-1.4.1.jar 
-rw-r--r-- 1 Rob staff 313898 6 Jul 2016 dom4j-1.6.1.jar 
-rw-r--r-- 1 Rob staff 1488862 11 Apr 16:12 framework_S3.jar 
-rw-r--r-- 1 Rob staff 2172223 11 Apr 16:12 guava-15.0-rc1.jar 
-rw-r--r-- 1 Rob staff 592008 6 Mar 2017 httpclient-4.3.6.jar 
-rw-r--r-- 1 Rob staff 727567 5 May 09:59 httpclient-4.5.jar 
-rw-r--r-- 1 Rob staff 282793 6 Mar 2017 httpcore-4.3.3.jar 
-rw-r--r-- 1 Rob staff 39821 6 Jul 2016 jackson-annotations-2.5.3.jar 
-rw-r--r-- 1 Rob staff 46968 5 May 09:59 jackson-annotations-2.6.0.jar 
-rw-r--r-- 1 Rob staff 229998 5 Apr 15:57 jackson-core-2.5.3.jar 
-rw-r--r-- 1 Rob staff 258837 5 May 09:59 jackson-core-2.6.0.jar 
-rw-r--r-- 1 Rob staff 1143162 6 Jul 2016 jackson-databind-2.5.3.jar 
-rw-r--r-- 1 Rob staff 1160720 5 May 09:59 jackson-databind-2.6.0.jar 
-rw-r--r-- 1 Rob staff 621931 6 Mar 2017 joda-time-2.8.1.jar 
-rw-r--r-- 1 Rob staff 630603 6 Jul 2016 jtds-1.3.1-patch.jar 
-rw-r--r-- 1 Rob staff 481535 6 Jul 2016 log4j-1.2.16.jar 
-rw-r--r-- 1 Rob staff 39483 6 Jul 2016 org.talend.dataquality.parser.jar 
-rw-r--r-- 1 Rob staff 336993 28 Sep 15:04 routines.jar 
-rw-r--r-- 1 Rob staff 89954 6 Jul 2016 talend_file_enhanced_20070724.jar

 

Another cause would be that the Job has multiple routine dependencies and each routine was pointing to a different version of the library. For example, some routines depended on jackson-xx-2.5.3 and some on jackson-xx-2.6.0. In this case, the jackson-databind-2.5.3.jar and jackson-databind-2.6.0.jar are used in the Job/routine.

 

Solution

To fix the issue in the Job:

  1. Ensure that all the routines are pointing to same library and version.
  2. Edit the job_run.bat or job_run.sh file and make sure it is pointing to the correct library and version, then Save the file.
  3. Run the Job again.
Version history
Revision #:
9 of 9
Last update:
‎09-29-2018 12:11 AM
Updated by: