Zelix KlassMaster - Java Obfuscator

Java Line Number Scrambling

Java obfuscators remove line number debugging information from class files to save space and to provide decompilers with less information about the classes. However, if your customers hit a bug in your bytecode, they will report back to you with a stack trace like the following.
java.lang.NullPointerException: 
        at com.mycompany.c.a(c.java)
        at com.mycompany.c.a(c.java)
        at com.mycompany.c.b(c.java)
        at com.mycompany.c.a(c.java)
        at com.mycompany.b.a(b.java)
        at com.mycompany.b.a.a(b.java)
        at com.mycompany.Main.main(Main.java)
Since the class com.mycompany.c will typically have been obfuscated to contain many overloaded methods with the names "a" and "b", diagnosing the problem and reproducing the bug will be very time consuming for your developers and very frustrating for your customers.

Zelix KlassMaster's Line Number Scrambling technology allows you to include scrambled line numbers in your bytecode. Decompilers are given no useful extra information about your classes but your stack traces can be translated by the Stack Trace Translate dialog to reveal the exact, original source code line number for each step in the stack trace. It can save your developers weeks of guess work.

Line Number Scrambling doesn't slow down your bytecode but it does increase it's size. It is intended to be used in beta releases and in any applications that are not size sensitive.