pantsbuild / jarjar

An export of https://code.google.com/p/jarjar/ @ svn:r142 for pants tool use and further development.
Apache License 2.0
37 stars 27 forks source link

Attempt to load superclasses of shading subject #21

Open stuhood opened 8 years ago

stuhood commented 8 years ago

In some codepaths, ASM will attempt to call ClassWriter.getCommonSuperClass for a class referenced from a class it is shading. The class is available in the subject classpath, but is not available on the jarjar tool's classpath, and so the lookup fails.

Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: com.example.shaded.Thing
at org.objectweb.asm.ClassWriter.getCommonSuperClass(Unknown Source)
at org.objectweb.asm.ClassWriter.a(Unknown Source)
at org.objectweb.asm.Frame.a(Unknown Source)
at org.objectweb.asm.Frame.a(Unknown Source)
at org.objectweb.asm.MethodWriter.visitMaxs(Unknown Source)
at org.objectweb.asm.ClassReader.a(Unknown Source)
at org.objectweb.asm.ClassReader.b(Unknown Source)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
at org.objectweb.asm.ClassWriter.toByteArray(Unknown Source)
at org.pantsbuild.jarjar.util.GetNameClassWriter.toByteArray(GetNameClassWriter.java:41)
at org.pantsbuild.jarjar.util.JarTransformer.process(JarTransformer.java:39)
at org.pantsbuild.jarjar.util.JarProcessorChain.process(JarProcessorChain.java:38)
at org.pantsbuild.jarjar.MainProcessor.process(MainProcessor.java:115)
at org.pantsbuild.jarjar.util.StandaloneJarProcessor.run(StandaloneJarProcessor.java:46)
at org.pantsbuild.jarjar.Main.process(Main.java:95)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.pantsbuild.jarjar.MainUtil.runMain(MainUtil.java:37)
at org.pantsbuild.jarjar.Main.main(Main.java:50)

Original investigation was by @baroquebobcat