Greetings, I have a relatively complex application with Spark, Jetty and Guava (16) not fitting together. Exception happens when some components try to use "mix" of Guava classes (including Spark's pieces) that are loaded by different classloaders: java.lang.LinkageError: loader constraint violation: when resolving method "com.google.common.collect.Iterables.transform(Ljava/lang/Iterable;Lcom/google/common/base/Function;)Ljava/lang/Iterable;" the class loader (instance of org/eclipse/jetty/webapp/WebAppClassLoader) of the current class, org/apache/cassandra/db/ColumnFamilyStore, and the class loader (instance of java/net/URLClassLoader) for resolved class, com/google/common/collect/Iterables, have different Class objects for the type e;Lcom/google/common/base/Function;)Ljava/lang/Iterable; used in the signature
According to https://issues.apache.org/jira/browse/SPARK-4819 it's not going to be fixed at least until Spark 2.0, but maybe some workaround is possible? Those classes are pretty simple and have low chances to be changed in Guava significantly, so any "external" Guava can provide them. So, could such problems be fixed if those Spark's pieces of Guava would be in separate jar and could be excluded from the mix (substituted by "external" Guava)? Thanks, Anton