2012-02-14 22 views
5

Proguard là đâm với "Proguard trở lại với mã lỗi 1", và vụ tai nạn này trong bảng điều khiểnProguard: IllegalArgumentException: Ngăn xếp có kích thước khác nhau hiện nay

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) 

tôi đã thu hẹp nó xuống đến một khối try catch cho một IOException. Nếu tôi nhận xét rằng cố gắng bắt khối sau đó nó cho thấy lỗi này cho một IOException thử bắt khối ở nơi khác trong ứng dụng. Nếu tôi nhận xét rằng một ra, sau đó nó thành công xây dựng.

Vì vậy, ở cả hai nơi, bảo vệ có vẻ như đang gặp sự cố trên IOException, hãy thử chặn chặn. Những khối này đã có trong đoạn mã trong các bản dựng trước đã đi qua proguard mà không gặp bất kỳ rắc rối nào trước đây.

Ngoài ra, còn có các khối catch IOException khác không cung cấp bất kỳ lỗi nào.

Tôi đã thử tính năng này với proguard 4.5, 4.6 và 4.7 và tất cả đều không thành công.

Bất kỳ ý tưởng nào?

Cảm ơn

Trả lời

8

Điều này dường như là lỗi trong ProGuard. Bạn có thể đăng nhập trên ProGuard's bug tracker, tốt nhất là với một trường hợp thử nghiệm nhỏ cho phép tôi tạo lại sự cố hoặc bạn có thể mail it với tôi (Eric, nhà phát triển của ProGuard).

Trong thời gian này, bạn có thể khắc phục sự cố bằng cách tắt tối ưu hóa (với tùy chọn -dontoptimize).

+0

off đầu tiên, cảm ơn rất nhiều cho Proguard, nó thực sự là tuyệt vời và dễ sử dụng. Tôi đã đi trước và nộp một lỗi. Để hoàn thành bài đăng tràn ngăn xếp này, dưới đây là liên kết https://sourceforge.net/tracker/?func=detail&aid=3487940&group_id=54750&atid=474704 Cảm ơn bạn lần nữa. – cottonBallPaws

+0

nó vẫn xảy ra với phiên bản ProGuard 5.2.1 :-( –

+0

5.3.3 Ngoài ra, giải pháp ở đây là gì? – batmaci

0

Tôi nhận được lỗi này cho proguard 5.3.3 trên dự án biểu mẫu xamarin. vấn đề của tôi là tôi đã có tập tin bị mất trong thư mục proguard của tôi bởi vì khi bạn tải về một phiên bản của proguard từ trang web của họ, bạn không có các tập tin txt trong zip tải về. Nó luôn luôn là tốt hơn để sao lưu proguard cũ của bạn và sao chép các tập tin này từ đó hoặc bạn chỉ có thể tạo bằng tay tôi tin tưởng.

enter image description here

Các vấn đề liên quan