Hello,
When running proguard 6.1.0beta2, I get a NPE .
java.lang.NullPointerException
at proguard.shrink.ShortestUsageMarker.isUsed(ShortestUsageMarker.java:147)
at proguard.shrink.ClassShrinker.shrinkConstantIndexArray(ClassShrinker.java:468)
at proguard.shrink.ClassShrinker.visitNestMembersAttribute(ClassShrinker.java:215)
at proguard.classfile.attribute.NestMembersAttribute.accept(NestMembersAttribute.java:64)
at proguard.classfile.ProgramClass.attributesAccept(ProgramClass.java:619)
at proguard.shrink.ClassShrinker.visitProgramClass(ClassShrinker.java:113)
at proguard.classfile.visitor.MultiClassVisitor.visitProgramClass(MultiClassVisitor.java:67)
at proguard.shrink.UsedClassFilter.visitProgramClass(UsedClassFilter.java:62)
at proguard.classfile.ProgramClass.accept(ProgramClass.java:430)
at proguard.classfile.ClassPool.classesAccept(ClassPool.java:125)
at proguard.shrink.Shrinker.execute(Shrinker.java:158)
at proguard.ProGuard.shrink(ProGuard.java:392)
at proguard.ProGuard.execute(ProGuard.java:146)
at proguard.ProGuard.main(ProGuard.java:586)
I am not able to find out which of my classes causes the behavior.
What i see in debugger is that ClassShrinker.visitNestMembersAttribute() is called with a clazz parameter having constantPool[0] set to null . It then causes a NPE in ShortestUsageMarker.isUsed().
To work around I just added a check for null in ShortestUsageMarker line 147:
protected boolean isUsed(VisitorAccepter visitorAccepter)
{
Seeing that same NPE with 6.1.0beta2, the build works fine with -dontshrink enabled.
Thanks for your report. This turns out to be a duplicate of bug #740 (which also contains a patch).
seems to be fixed in 6.1.0, thanks