[
https://issues.apache.org/jira/browse/TOREE-355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15966404#comment-15966404
]
Josh trier commented on TOREE-355:
----------------------------------
I believe so. Not 100% what you're looking for.
{quote}
c581f588170f6b1ce1e2ed215b70fb16 AnnotationInfoImpl.class
f7a6b0ca441fc98283dd7eaf91517c27 ASMBitmapMapper$$anonfun$mapModifiers$1.class
787998703b51276c382587c68b5892d7 ASMBitmapMapper$.class
6af683c2eadca256c7e77df395181c04 ASMBitmapMapper$class.class
8108c24c7670187491fc0ad723144876 ASMBitmapMapper.class
535440b7583cb0c4086faf0a0c9600af ASMEmptyVisitor$$anon$1.class
84f6b9cedb733d6e2833ea256304be2f ASMEmptyVisitor$$anon$2.class
85a0b23dd849a710be898c50795d62c7 ASMEmptyVisitor$$anon$3.class
0b7ae5e404299cfe8ba15061619bbc6e ASMEmptyVisitor.class
e7462851115f801cf226586bc2657d81 ClassFile$.class
d643635957e3c8cba2f682d3285c1b2d ClassFile.class
36861d8f931c0859e80318f2001ef760 ClassInfoImpl.class
1d5dfed5a543ae6c6da3b9fbec6c2fcc ClassVisitor$$anonfun$1.class
f0c2b56e9c5155295ed0913c97ec09ea
ClassVisitor$AnnotationArrayVisitor$$anon$2.class
c0982f35c75beb33dbed483671e759c3 ClassVisitor$AnnotationArrayVisitor.class
52ef951009c9cea8f2ff16703bbec7ab ClassVisitor$AnnotationVisitor$$anon$1.class
488b702936ccff36cb86ed7bdc3b9bb0 ClassVisitor$AnnotationVisitor.class
fbe16ce21eeae82a9bea156c6d6cdcc7 ClassVisitor.class
17a46c2d52c244cfa70ab589e114826d FieldInfoImpl.class
9fafd9c11524f205aa4ef7276d120bb1 InterfaceMaker$$anonfun$makeInterface$1.class
0d96bd702be6f7cc0caa62c75d1a6719 InterfaceMaker$$anonfun$makeInterface$2.class
d6073de0293c7a4ae0fde81f22d0e773 InterfaceMaker$.class
6dc9570830ea349dc4205ebb9494d991 InterfaceMaker.class
4b7806ccfe2f6b9454f18b0fe02bbbe1 MapToBeanMapperImpl$$anon$1.class
e8de55d0cb204d342e37340dba2dc91a MapToBeanMapperImpl$$anonfun$1.class
610047d5a2a3ea4b66239ba0df151dc2 MapToBeanMapperImpl$$anonfun$2.class
a1e30fed6fad9d3b36f047ec7632bd10 MapToBeanMapperImpl$$anonfun$3.class
9df146a900a7bae8b86f4c8cf6927cb0
MapToBeanMapperImpl$$anonfun$org$clapper$classutil$asm$MapToBeanMapperImpl$$keyToMethodName$1$1.class
d5fdc7d03f9d1712598fd97ae10a02e8 MapToBeanMapperImpl.class
749128439e8134bbcf6481edf76877b4 MethodInfoImpl.class
{quote}
> java.lang.IncompatibleClassChangeError: class
> org.clapper.classutil.asm.ASMEmptyVisitor has interface
> org.objectweb.asm.ClassVisitor as super class
> ---------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: TOREE-355
> URL: https://issues.apache.org/jira/browse/TOREE-355
> Project: TOREE
> Issue Type: Bug
> Environment: Toree 0.2.0.dev1
> CDH 5.9's embedded spark-2.0.0-beta2
> Reporter: Adrien Lavoillotte
> Assignee: Luciano Resende
> Labels: easyfix
> Fix For: 0.2.0
>
> Attachments: toree shade.png
>
>
> Using Toree 0.2.0.dev1 with CDH's embedded spark 2 did not cause TOREE-327
> for me. Instead, I got this error:
> {code}
> Exception in thread "main" java.lang.IncompatibleClassChangeError: class
> org.clapper.classutil.asm.ASMEmptyVisitor has interface
> org.objectweb.asm.ClassVisitor as super class
> at java.lang.ClassLoader.defineClass1(Native Method)
> at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
> at
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
> at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
> at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
> at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
> at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
> at java.lang.ClassLoader.defineClass1(Native Method)
> at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
> at
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
> at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
> at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
> at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
> at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
> at
> org.clapper.classutil.asm.ClassFile$.load(ClassFinderImpl.scala:250)
> at
> org.clapper.classutil.ClassFinder.org$clapper$classutil$ClassFinder$$classData(ClassFinder.scala:427)
> at
> org.clapper.classutil.ClassFinder$$anonfun$2.apply(ClassFinder.scala:385)
> at
> org.clapper.classutil.ClassFinder$$anonfun$2.apply(ClassFinder.scala:385)
> at scala.collection.immutable.Stream.map(Stream.scala:418)
> at
> org.clapper.classutil.ClassFinder.processOpenZip(ClassFinder.scala:385)
> at org.clapper.classutil.ClassFinder.processJar(ClassFinder.scala:340)
> at
> org.clapper.classutil.ClassFinder.findClassesIn(ClassFinder.scala:329)
> at org.clapper.classutil.ClassFinder.find(ClassFinder.scala:320)
> at org.clapper.classutil.ClassFinder.getClasses(ClassFinder.scala:311)
> at
> org.apache.toree.plugins.PluginSearcher$$anonfun$1.apply(PluginSearcher.scala:73)
> at
> org.apache.toree.plugins.PluginSearcher$$anonfun$1.apply(PluginSearcher.scala:73)
> at scala.util.Try$.apply(Try.scala:192)
> at
> org.apache.toree.plugins.PluginSearcher.loadClassMap(PluginSearcher.scala:73)
> at
> org.apache.toree.plugins.PluginSearcher.internalClassInfo$lzycompute(PluginSearcher.scala:35)
> at
> org.apache.toree.plugins.PluginSearcher.internalClassInfo(PluginSearcher.scala:34)
> at
> org.apache.toree.plugins.PluginSearcher.internal$lzycompute(PluginSearcher.scala:38)
> at
> org.apache.toree.plugins.PluginSearcher.internal(PluginSearcher.scala:38)
> at
> org.apache.toree.plugins.PluginManager.internalPlugins$lzycompute(PluginManager.scala:45)
> at
> org.apache.toree.plugins.PluginManager.internalPlugins(PluginManager.scala:44)
> at
> org.apache.toree.plugins.PluginManager.initialize(PluginManager.scala:80)
> at
> org.apache.toree.boot.layer.StandardComponentInitialization$class.initializePlugins(ComponentInitialization.scala:221)
> at
> org.apache.toree.boot.layer.StandardComponentInitialization$class.initializeComponents(ComponentInitialization.scala:86)
> at org.apache.toree.Main$$anon$1.initializeComponents(Main.scala:35)
> at
> org.apache.toree.boot.KernelBootstrap.initialize(KernelBootstrap.scala:101)
> at
> org.apache.toree.Main$.delayedEndpoint$org$apache$toree$Main$1(Main.scala:40)
> at org.apache.toree.Main$delayedInit$body.apply(Main.scala:24)
> {code}
> Apparently in some much older version of ASM (3), {{ClassVisitor}} was an
> interface and not an abstract class. Said much older version can be found in
> some Hadoop libs or older Spark libs, and ends up in the classpath with CDH's
> spark 2.
> The simplest solution is to shadow ASM, e.g. using JarJAr Links. The
> following produces an assembly jar that does not have this issue:
> {code}
> echo 'rule org.objectweb.asm.** org.apache.toree.shadow.@0' >relocate.rules
> java -jar jarjar-1.4.jar process relocate.rules toree.jar toree-relocated.jar
> {code}
> ASM is a dependency of ClassUtil, for which [an issue on this is currently
> open|https://github.com/bmc/classutil/issues/19], but the author says he may
> not want to shadow ASM, so I thought maybe you might want to.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)