During my support activities on the A.A.A.R. solution, I receive few contacts reporting about the error described below. The context is the first execution of the AAAR_Extract script, immediately after the first installation.
2015/07/25 16:25:15 - Cmis Input documents before last update.0 - ERROR (version 5.4.0.1-130, build 1 from 2015-06-14_12-34-55 by buildguy) : Unexpected error 2015/07/25 16:25:15 - Cmis Input documents before last update.0 - ERROR (version 5.4.0.1-130, build 1 from 2015-06-14_12-34-55 by buildguy) : java.lang.LinkageError: loader constraint violation: when resolving method "org.slf4j.impl.StaticLoggerBinder.getLoggerFactory()Lorg/slf4j/ILoggerFactory;" the class loader (instance of org/pentaho/di/core/plugins/KettleURLClassLoader) of the current class, org/slf4j/LoggerFactory, and the class loader (instance of java/net/URLClassLoader) for resolved class, org/slf4j/impl/StaticLoggerBinder, have different Class objects for the type LoggerFactory; used in the signature 2015/07/25 16:25:15 - Cmis Input documents before last update.0 - at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:299) 2015/07/25 16:25:15 - Cmis Input documents before last update.0 - at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:269) 2015/07/25 16:25:15 - Cmis Input documents before last update.0 - at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281) 2015/07/25 16:25:15 - Cmis Input documents before last update.0 - at org.apache.chemistry.opencmis.client.bindings.cache.impl.CacheImpl.<clinit>(CacheImpl.java:38) 2015/07/25 16:25:15 - Cmis Input documents before last update.0 - at org.apache.chemistry.opencmis.client.bindings.impl.RepositoryInfoCache.<init>(RepositoryInfoCache.java:56) 2015/07/25 16:25:15 - Cmis Input documents before last update.0 - at org.apache.chemistry.opencmis.client.bindings.impl.CmisBindingImpl.clearAllCaches(CmisBindingImpl.java:253) 2015/07/25 16:25:15 - Cmis Input documents before last update.0 - at org.apache.chemistry.opencmis.client.bindings.impl.CmisBindingImpl.<init>(CmisBindingImpl.java:150) 2015/07/25 16:25:15 - Cmis Input documents before last update.0 - at org.apache.chemistry.opencmis.client.bindings.CmisBindingFactory.createCmisAtomPubBinding(CmisBindingFactory.java:146) 2015/07/25 16:25:15 - Cmis Input documents before last update.0 - at org.apache.chemistry.opencmis.client.runtime.CmisBindingHelper.createAtomPubBinding(CmisBindingHelper.java:98) 2015/07/25 16:25:15 - Cmis Input documents before last update.0 - at org.apache.chemistry.opencmis.client.runtime.CmisBindingHelper.createBinding(CmisBindingHelper.java:56) 2015/07/25 16:25:15 - Cmis Input documents before last update.0 - at org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl.getRepositories(SessionFactoryImpl.java:133) 2015/07/25 16:25:15 - Cmis Input documents before last update.0 - at org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl.getRepositories(SessionFactoryImpl.java:112) 2015/07/25 16:25:15 - Cmis Input documents before last update.0 - at it.francescocorti.kettle.cmisinput.CmisSessionFactory.getNewSession(Unknown Source) 2015/07/25 16:25:15 - Cmis Input documents before last update.0 - at it.francescocorti.kettle.cmisinput.CmisSessionFactory.getSession(Unknown Source) 2015/07/25 16:25:15 - Cmis Input documents before last update.0 - at it.francescocorti.kettle.cmisinput.CmisInputMeta.getSession(Unknown Source) 2015/07/25 16:25:15 - Cmis Input documents before last update.0 - at it.francescocorti.kettle.cmisinput.CmisInputMeta.getFields(Unknown Source) 2015/07/25 16:25:15 - Cmis Input documents before last update.0 - at it.francescocorti.kettle.cmisinput.CmisInput.processRow(Unknown Source) 2015/07/25 16:25:15 - Cmis Input documents before last update.0 - at org.pentaho.di.trans.step.RunThread.run(RunThread.java:62) 2015/07/25 16:25:15 - Cmis Input documents before last update.0 - at java.lang.Thread.run(Thread.java:722)
In this post I would like to face this issue, describing the reasons of this behaviour and focusing on the solution (because there is a solution).
Description of the issue
The exception talks about a conflict of the org/slf4j/LoggerFactory
class, declared in the slf4j-api-1.7.5.jar
library. If you take a look into the Pentaho installation, with the A.A.A.R. onboard, you will find two instance of the library in two different paths: the first into the tomcat/lib
folder and the second into the /opt/pentaho/data-integration/plugins/steps/CmisInput/
folder. The reason of the conflict is that the java process (probably becaus of the CLASSPATH) does not include the “right library” and it does not recognize the signature, causing the error.
In the link below you can find a better description of the behaviour (and the solution).
http://stackoverflow.com/questions/29504180/slf4j-error-class-loader-have-different-class-objects-for-the-type
How to solve the exception
Thank to the contribution of Fabio Benevento and Lorenzo Niccolai from Genesy (Italy), the solution is to rename the slf4j-api-1.7.5.jar
into the /opt/pentaho/data-integration/plugins/steps/CmisInput/
folder.
Executing again the AAAR_Extract
script, the exception will disappear with the conflict.
Conclusion
In this post I share the solution to the exception described above, during the first execution of the AAAR_Extract
script, immediately after the first installation. Many thanks to Fabio Benevento and Lorenzo Niccolai from Genesy (Italy) that tested and used the solution described in this post.
The post slf4j conflict during AAAR_Extract execution appeared first on Francesco Corti.