One Star

Use of External Library

TIS 5.1.2
I have a custom routine that uses an external library (commons-codec-1.7.jar). I used "Edit Routine Libraries" to define the library dependency. The routine works fine when called from a job.
However, when I use it in another job that also contains a tWebServiceInput component, my routine fails:
Exception in thread "main" java.lang.Error: java.lang.VerifyError: (class: org/apache/commons/codec/binary/Base64InputStream, method: <init> signature: (Ljava/io/InputStream;ZI[B)V) Incompatible argument to function
I've established that:
1. The tWebServiceInput component uses commons-codec-1.3.jar. (See <studio>\plugins\org.talend.designer.components.localprovider_5.1.2.r90681\components\tWebServiceInput\tWebServiceInput_java.xml)
2. When running the job with the web service component, the class path includes first the 1.3 jar, then the 1.7 jar.
3. When running the job without the web service component, the class path includes only the 1.7 jar.
4. My job is presumably failing because the routine is being "forced" to use the 1.3 jar.
How do I overcome the need for different components in the same job to have a dependency on a different version of a library?
4 REPLIES
Community Manager

Re: Use of External Library

Hi
This can be a solution to get your job works, but it is not a better way for fixing this issue completely, export the job script, edit the job script (.bat/.sh) and move 1.7 jar before 1.3 jar, execute the job by executing this job script.
----------------------------------------------------------
Talend | Data Agility for Modern Business
One Star

Re: Use of External Library

Hi Shong,
Well, yes, modifying the class path in the built job allows my routine to run successfully - 1.7 jar used as designed. However:
1. The tWebServiceInput component has been designed to run with 1.3 and presumanly now it is being forced to use 1.7. There is a high probability of failure on a piece of the web service functionality now.
2. I cannot use this workaround to run the job in the studio.
I'm sure there is the potential for similar conflicts to exist on other components - many components in Talend use different versions of the codec; if components which use different versions of the codec are used in the same job hierarchy and there has been a change of functionailty/method signature in the codec on a used method, then the same error will arise.
I think we have a Talend bug here?
Community Manager

Re: Use of External Library

Hi
Yes, report a bug on our bugtracker, please, our developer from R&D team will take a look at it, confirm it as a bug or suggest a better solution.
Thank you!
Shong
----------------------------------------------------------
Talend | Data Agility for Modern Business
One Star

Re: Use of External Library