2012-02-14 36 views
5

Proguard的与“ProGuard和错误代码1返回”崩溃,而这个崩溃的控制台:Proguard的:抛出:IllegalArgumentException:堆叠具有不同的电流大小

java.lang.IllegalArgumentException: Stacks have different current sizes [0] and [1] 
at proguard.evaluation.Stack.generalize(Stack.java:125) 
at proguard.evaluation.TracedStack.generalize(TracedStack.java:140) 
at proguard.optimize.evaluation.PartialEvaluator.evaluateSingleInstructionBlock(PartialEvaluator.java:683) 
at proguard.optimize.evaluation.PartialEvaluator.evaluateInstructionBlock(PartialEvaluator.java:587) 
at proguard.optimize.evaluation.PartialEvaluator.visitExceptionInfo(PartialEvaluator.java:1078) 
at proguard.classfile.visitor.ExceptionHandlerFilter.visitExceptionInfo(ExceptionHandlerFilter.java:67) 
at proguard.classfile.attribute.CodeAttribute.exceptionsAccept(CodeAttribute.java:186) 
at proguard.optimize.evaluation.PartialEvaluator.evaluateExceptionHandlers(PartialEvaluator.java:1018) 
at proguard.optimize.evaluation.PartialEvaluator.evaluateInstructionBlockAndExceptionHandlers(PartialEvaluator.java:567) 
at proguard.optimize.evaluation.PartialEvaluator.visitCodeAttribute0(PartialEvaluator.java:264) 
at proguard.optimize.evaluation.PartialEvaluator.visitCodeAttribute(PartialEvaluator.java:181) 
at proguard.optimize.evaluation.LivenessAnalyzer.visitCodeAttribute(LivenessAnalyzer.java:205) 
at proguard.optimize.evaluation.VariableOptimizer.visitCodeAttribute(VariableOptimizer.java:105) 
at proguard.classfile.attribute.CodeAttribute.accept(CodeAttribute.java:101) 
at proguard.classfile.ProgramMethod.attributesAccept(ProgramMethod.java:79) 
at proguard.classfile.attribute.visitor.AllAttributeVisitor.visitProgramMember(AllAttributeVisitor.java:95) 
at proguard.classfile.util.SimplifiedVisitor.visitProgramMethod(SimplifiedVisitor.java:91) 
at proguard.classfile.ProgramMethod.accept(ProgramMethod.java:71) 
at proguard.classfile.ProgramClass.methodsAccept(ProgramClass.java:504) 
at proguard.classfile.visitor.AllMethodVisitor.visitProgramClass(AllMethodVisitor.java:47) 
at proguard.classfile.ProgramClass.accept(ProgramClass.java:346) 
at proguard.classfile.ClassPool.classesAccept(ClassPool.java:116) 
at proguard.optimize.Optimizer.execute(Optimizer.java:833) 
at proguard.ProGuard.optimize(ProGuard.java:306) 
at proguard.ProGuard.execute(ProGuard.java:115) 
at proguard.ProGuard.main(ProGuard.java:492) 

我已经把范围缩小到一个try catch块IOException。如果我注释掉那个try catch块,那么它会在应用程序中的其他地方显示另一个IOException尝试catch块的错误。如果我评论一个,那么它就成功了。

所以在这两个地方proguard似乎崩溃了IOException尝试catch块。这些代码块在以前的代码中已经在没有任何麻烦的情况下通过了proguard。

此外,还有其他IOException catch块不会给出任何错误。

我试着用proguard 4.5,4.6和4.7来测试,但都失败了。

任何想法?

谢谢

回答

8

这似乎是ProGuard中的一个错误。你可以在ProGuard's bug tracker上登录,最好带一个小的测试用例,可以让我重现问题,或者你可以mail it给我(Eric,ProGuard的开发人员)。

目前,您可以通过关闭优化解决问题(使用选项-dontoptimize)。

+0

首先,感谢这么多的ProGuard,它是真正真棒和易于使用。我继续前进并提交了一个错误。为了使这个堆栈溢出完成后,这里是链接https://sourceforge.net/tracker/?func=detail&aid=3487940&group_id=54750&atid=474704再次感谢。 – cottonBallPaws 2012-02-15 18:45:00

+0

它仍然发生在ProGuard 5.2.1版本中:-( – 2016-07-02 15:52:15

+0

5.3.3也有,这里的解决方案是什么? – batmaci 2017-11-06 23:12:49

0

我在xamarin表单项目中遇到了proguard 5.3.3的这个错误。我的问题是我的文件丢失在我的proguard文件夹中,因为当你从他们的网站下载一个版本的proguard时,你不会在下载的zip文件中有这些txt文件。备份旧的proguard并从那里复制这些文件总是更好,或者您可以手动创建,我相信。

enter image description here

相关问题