When this option is invoked, all inner scopes will be braced, even if the scope is only one statement in length.
When SourceAgain is invoked with this option, it will not strip import
prefixes from types and variables. For instance, SourceAgain normally
java.lang prefix whenever encountered. However,
this may cause conflicts with other classes. For example, if you have a
mypackage.Object class, stripping the
java.lang.Object would be incorrect.
This option forces full qualification of the class named cn.
When an entire package is not being decompiled at once, name conflicts may go
unnoticed. For example,
java.lang.Object must be fully qualified
when used within a package which defines its own
mypackage.Object. Instead of using -fullname to fully qualify all
names, this option can be used to selectively qualify those few names which may
This option forces all integral constants used in assignments to be printed in hexadecimal. SourceAgain uses a heuristic to determine when to print a constant in hex; -hexassign allows all assignments to fall into the hex category.
Use this option to let SourceAgain make up names for almost all elements of the class file, including method names, field names, and variable names. WARNING: Because this option will rename elements of your Java standard libraries, this will almost certainly produce Java code that will not be exactly equivalent to the original. This option should only be used for documentation purposes.
Some class files may have field names that are "fishy", i.e., they contain non printable characters. While it is perfectly legal to have unicode field names, this can look a bit confusing on output. By default, SourceAgain does not use fishy names. It instead renames those symbols. Use the -fishy command if you would like to see the original names.
Some class files may have bogus entries in the local variable name tables, which cause SourceAgain to produce illegal code. This is possible because the Java VM makes no use of the variable name tables; they are purely for debugging. Therefore, a class file is free to insert anything into the local variable name table, including strings that do not represent legal Java identifiers. Use -ilocal to ignore the local variable name tables, and let SourceAgain create variable names on its own.
Some obfuscators rename only private field and method names. When decompling bytecode with obfuscated private members, use this option.
This option will cause all local variables to be given default initializers:
null for objects, and zero otherwise.
This option will convert all generated names to lowercase.
SourceAgain decompiles and applies a post processing heuristic which converts
while loops that "look like"
for loops. Sometimes, this may not be desired. Use
the -nofor option to leave these loops as
By default, SourceAgain uses the
InnerClasses attribute to
decompile classes at their correct inner scopes. When this option is used,
all inner classes will be treated as outer classes. This option is most useful
when determining how inner classes are implemented by a particular
compiler. This option may produce source that is not recompilable because
of private access violations.
This option will cause the generated code to adhere strictly to some language features that were added in the 1.1 specification of Java. Use this option if your class files were created under a 1.0.2 compliant compiler.
By default, SourceAgain prints four spaces for each indentation level. To specify a different number of spaces, use this option. Specifying a tab width of zero emits the tab character instead.
By default SourceAgain declares all local variables at their inner most scope. Use this option to declare all local variables at the top level scope.
Further contact and product information is available on Ahpah's web site at http://www.ahpah.com/. If you would prefer to speak to an Ahpah employee directly, contact us at (650) 960-2472.
SourceAgain and the Ahpah name are trademarks of Ahpah Software, Inc. All other trademarks are the registered property of their respective owners.
SourceAgain Documentation © 2004 Ahpah Software, Inc.