Storyyeller / Krakatau

Java decompiler, assembler, and disassembler
GNU General Public License v3.0
1.95k stars 219 forks source link

Exception handlers do not form forest #3

Closed Sputuks3 closed 11 years ago

Sputuks3 commented 11 years ago

I often encounter this error afterwhich, the decompile process is halted and remaining classes not decompiled. Anyone knows how to fix or ignore problematic class?

Traceback (most recent call last): File "decompile.py", line 130, in decompileClass(path, targets, args.out, args.dis) File "decompile.py", line 64, in decompileClass source = deco.generateSource() File "C:\Krakatau\Krakatau\java\javaclass.py", line 71, in generateSource method_defs = map(self._getMethod, self.methods) File "C:\Krakatau\Krakatau\java\javaclass.py", line 49, in _getMethod code_ast = MethodDecompiler(method, graph).generateAST() File "C:\Krakatau\Krakatau\java\javamethod.py", line 731, in generateAST blocks, entryBlock, handlerInfos = preprocess.structureCFG(blocks, blocks[0]) File "C:\Krakatau\Krakatau\java\preprocess.py", line 481, in structureCFG handlerInfos = fixTryBlocks(blocks, root) File "C:\Krakatau\Krakatau\java\preprocess.py", line 448, in fixTryBlocks error('Exception handlers do not form forest') File "C:\Krakatau\Krakatau\java\preprocess.py", line 15, in error raise DecompilationError(msg) Krakatau.java.preprocess.DecompilationError: Exception handlers do not form forest

Storyyeller commented 11 years ago

Set IGNORE_EXCEPTIONS to 1 in Krakatau\java\javaclass.py. This will make it skip past methods that failed to decompile.

Storyyeller commented 11 years ago

The new graph structuring algorithm no longer generates this error.