2012-02-14 14 views
5

Proguard está chocando con "Proguard volvió con código de error 1", y este accidente en la consola:Proguard: IllegalArgumentException: Las pilas tienen diferentes tamaños actuales

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) 

me han reducido a un bloque intento de captura de una IOException. Si hago un comentario de que intento capturar bloque, muestra este error para otro bloque de captura de prueba de IOException en otro lugar de la aplicación. Si comento eso, se construye con éxito.

Por lo tanto, en ambos lugares proguard parece estar fallando en un bloque de captura de prueba de IOException. Estos bloques han estado en el código en compilaciones previas que pasaron por proguard sin ningún problema antes.

Además, hay otros bloques catch IOException que no dan ningún error.

Intenté esto con proguard 4.5, 4.6 y 4.7 y todos fallaron.

¿Alguna idea?

Gracias

Respuesta

8

Esto parece ser un error en ProGuard. Puede iniciar sesión en ProGuard's bug tracker, de preferencia con un pequeño estuche de prueba que me permite reproducir el problema, o puede llamarme al mail it (Eric, desarrollador de ProGuard).

Por el momento, puede solucionar el problema desactivando la optimización (con la opción -dontoptimize).

+0

En primer lugar, muchas gracias por el PROGuard, es verdaderamente impresionante y fácil de usar. Seguí adelante y archivé un error. Con el objetivo de completar esta publicación de desbordamiento de pila, aquí está el enlace https://sourceforge.net/tracker/?func=detail&aid=3487940&group_id=54750&atid=474704 Gracias de nuevo. – cottonBallPaws

+0

todavía sucede con ProGuard versión 5.2.1 :-( –

+0

5.3.3 también. ¿Cuál es la solución aquí? – batmaci

0

Estaba obteniendo este error para proguard 5.3.3 en el proyecto de formularios xamarin. mi problema era que me faltaban los archivos en mi carpeta proguard porque cuando descargas una versión de proguard desde su sitio web, no tienes estos archivos txt en el zip descargado. Siempre es mejor hacer una copia de seguridad de tu antigua protección y copiar estos archivos desde allí o simplemente puedes crear manualmente, creo.

enter image description here

Cuestiones relacionadas