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)
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.Original investigation was by @baroquebobcat