Yet Another JAD Download Mirror


There used to be a time where everyone's decompiler of choice was jad. And it is still in demand by many.
Yes, jad is dead, and yes, it was not Open Source anyway, so there must be something better, right? Go to the main page and test newest cool Java decompilers.

Still, if you need it, here are the latest jad versions for different platforms.

Platform Comment Size
Jad 1.5.8g for Windows 9x/NT/2000 on Intel platform 233 KB
Jad 1.5.8g for Mac OS X 10.4.6 on Intel platform compiled by GCC 4.0 167 KB
Jad 1.5.8e for HP-UX 11.x 286 KB
Jad 1.5.8e for Linux on Intel platform 210 KB
Jad 1.5.8e for Linux (statically linked) take this version if the one above crashes or displays the "seek error" message. 381 KB
Jad 1.5.8d for OS-2 OS/2 version was cross-compiled on Windows using EMX and RSXNT packages, therefore it requires EMX runtime (EMX.DLL should be enough). 282 KB
Jad 1.5.8c for FreeBSD 4.0 statically linked. 315 KB
Jad 1.5.8c for OpenBSD 2.7 statically linked. 327 KB
Jad 1.5.8c for NetBSD 1.5 statically linked. 317 KB
Jad 1.5.8c for Solaris 8 on Intel platform 259 KB
Jad 1.5.8c for Mac OS X (Darwin 1.3) on PowerPC platform 260 KB
Jad 1.5.7g for Linux on Sun Sparc platform 176 KB
Jad 1.5.7g for Linux on Sun Sparc platform - statically linked 338 KB
Jad 1.5.7f for Solaris 7 on Sun Sparc platform compiled on Sun 4m (Sparc10) using GCC 2.8.1, statically linked. Works on Solaris 2.6 as well. 311 KB
Jad 1.5.7f for BeOS 5.0 on Intel platform statically linked. 233 KB
Jad 1.5.7b for Mac OS X (Rhapsody 5.3) on PowerPC platform 364 KB
Jad 1.5.7a for Solaris 7 on Intel platform try the version for Solaris 8 instead. 247 KB
Jad 1.5.5.3 for AIX 4.2 on IBM RS-6000 platform 353 KB

Installation

Unzip jad.zip file into any appropriate directory on your hard drive.
                                                        This will create two files:

                                                        - an executable file named 'jad.exe' (Windows *)
                                                        or 'jad' (*n*x)

                                                        - this README file

                                                        No other setup is required.
                                                    
How to use Jad

To decompile a single JAVA class file 'example1.class'
                                                        type the following:

                                                        jad example1.class

                                                        This command creates file 'example1.jad' in the current directory.
                                                        If such file already exists Jad asks whether you want to overwrite it or not.
                                                        Option -o permits overwriting without a confirmation.

                                                        You can omit .class extension and/or use wildcards in the names of
                                                        input files.

                                                        Option -s  allows to change output file extension:

                                                        jad -sjava example1.class

                                                        This command creates file 'example1.java'. Be careful when using
                                                        options -o and -sjava together, because Jad can accidentally overwrite
                                                        your own source files.

                                                        Jad uses JAVA class name as an output file name. For example, if class
                                                        file 'example1.class' contains JAVA class 'test1' then Jad will create
                                                        file 'test1.jad' rather than 'example1.jad'. If you want to specify
                                                        your own output file name use the output redirection:

                                                        jad -p example1.class > myexm1.java

                                                        Option -d allows you to specify another directory for output files,
                                                        which are created, by default, in the current directory. For example:

                                                        jad -o -dtest -sjava *.class

                                                        (or jad -o -d test -s java *.class, which has the same effect)

                                                        This command decompiles all .class files in the current directory
                                                        and places all output files with extension .java into directory 'test'.


                                                        If you want to decompile the whole tree of JAVA classes,
                                                        use the following command:

                                                        jad -o -r -sjava -dsrc tree/**/*.class

                                                        This command decompiles all .class files located in all
                                                        subdirectories of 'tree' and creates output files in subdirectories
                                                        of 'src' according to package names of classes. For example, if file
                                                        'tree/a/b/c.class' contains class 'c' from package 'a.b', then
                                                        output file will have a name 'src/a/b/c.java'.

                                                        Note the use of the "two stars" wildcard ('**') in the previous
                                                        command. It is handled by Jad rather than the command shell, so on
                                                        UNIX the last argument should be single-quoted:

                                                        jad -o -r -sjava -dsrc 'tree/**/*.class'


                                                        In a case you want to check the accuracy of the decompilation or just
                                                        curious, there is an option -a which tells Jad to annotate the output
                                                        with JAVA Virtual Machine bytecodes.

                                                        Jad supports the inner and anonymous classes.
                                                        When Jad expands wildcards in the input file names,
                                                        it automatically skips matching inner classes.
                                                        On UNIX Jad skips inner classes if there is more than
                                                        one class specified in the command line.
                                                        Jad looks for inner classes in the directory of their top-level
                                                        container class.
            
List of the command-line options

Jad accepts the following options:

                                                        -a       - annotate the output with JVM bytecodes (default: off)
                                                        -af      - same as -a, but output fully qualified names when annotating
                                                        -clear   - clear all prefixes, including the default ones (can be abbreviated as -cl)
                                                        -b       - output redundant braces (e.g., if(a) { b(); }, default: off)
                                                        -d  - directory for output files (will be created when necessary)
                                                        -dead    - try to decompile dead parts of code (if any) (default: off)
                                                        -disass  - disassemble method bytecodes (no JAVA source generated)
                                                        -f       - output fully qualified names for classes/fields/methods (default: off)
                                                        -ff      - output class fields before methods (default: after methods)
                                                        -i       - output default initializers for all non-final fields
                                                        -l  - split strings into pieces of maximum  chars (default: off)
                                                        -lnc     - annotate the output with line numbers (default: off)
                                                        -lradix - display long integers using the specified radix (8, 10 or 16)
                                                        -nl      - split strings on newline character (default: off)
                                                        -nocast  - don't generate auxiliary casts
                                                        -nocode  - don't generate the source code for methods
                                                        -noconv  - don't convert Java identifiers (default: convert)
                                                        -noctor  - suppress the empty constructors
                                                        -nodos   - do not check for class files written in DOS mode (CR before NL, default: check)
                                                        -nofd    - don't disambiguate fields with the same names by adding signatures to their names (default: do)
                                                        -noinner - turn off the support of inner classes (default: on)
                                                        -nolvt   - ignore Local Variable Table information
                                                        -nonlb   - don't output a newline before opening brace (default: do)
                                                        -o       - overwrite output files without confirmation (default: off)
                                                        -p       - send decompiled code to STDOUT (e.g., for piping)
                                                        -pi - pack imports into one line after  imports (default: 3)
                                                        -pv - pack fields with identical types into one line (default: off)
                                                        -pa - prefix for all packages in generated source files
                                                        -pc - prefix for classes with numerical names (default: _cls)
                                                        -pf - prefix for fields with numerical names (default: _fld)
                                                        -pe - prefix for unused exception names (default: _ex)
                                                        -pl - prefix for locals with numerical names (default: _lcl)
                                                        -pm - prefix for methods with numerical names (default: _mth)
                                                        -pp - prefix for method parms with numerical names (default: _prm)
                                                        -r       - restore package directory structrure
                                                        -radix - display integers using the specified radix (8, 10 or 16)
                                                        -s  - output file extension (by default '.jad')
                                                        -safe    - generate additional casts to disambiguate methods/fields (default: off)
                                                        -space   - output space between keyword (if/for/while/etc) and expression (default: off)
                                                        -stat    - display the total number of processed classes/methods/fields
                                                        -t       - use tabs instead of spaces for indentation
                                                        -t  - use  spaces for indentation (default: 4)
                                                        -v       - display method names being decompiled
                                                        -8       - convert UNICODE strings into 8-bit strings
                                                        using the current ANSI code page (Win32 only)
                                                        -&       - redirect STDERR to STDOUT (Win32 only)

            
Copyright

JAD is Copyright 1997-2001 Pavel Kouznetsov.

                                                        All rights reserved.

                                                        THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE SOFTWARE IS NOT DESIGNED OR INTENDED FOR USE IN ON-LINE CONTROL OF AIRCRAFT, AIR TRAFFIC, AIRCRAFT NAVIGATION OR AIRCRAFT COMMUNICATIONS; OR IN THE DESIGN, CONSTRUCTION, OPERATION OR MAINTENANCE OF ANY NUCLEAR FACILITY. THE AUTHOR DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OFFITNESS FOR SUCH USES. YOU MUST REPRESENT AND WARRANT THAT YOU WILL NOT USE THE SOFTWARE FOR SUCH PURPOSES