Skip to content
Projects

intoolswetrust/jd-cli has 656 GitHub stars and 97 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-15 14:14 UTC. Last push 2026-11-03.

How these counts are measured

Measured star growth

in 24h
0
in 7 days
Collecting history
in 15 days
Collecting history
in 1 month
Collecting history

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

About

Command line Java Decompiler

Developer Tools

README.md

Original

jd-cli - Command line Java Decompiler

The jd-cli is a simple command line wrapper around nbauma109/jd-core (fork of the original java-decompiler/jd-core) Java Decompiler project.

Download

Find latest bits in GitHub Releases.

Requirements

Java runtime required:

  • version 17+ (for jd-cli version 1.3.0+);
  • version 8+ for older jd-cli versions (< 1.3.0).

Usage

Command line

You can use the jd-cli.bat (Windows) or jd-cli (Linux/Unix) scripts to run the the JAR file.

Usage: java -jar jd-cli.jar [options] [Files to decompile]
  Options:
    --displayLineNumbers, -n
       displays line numbers in decompiled classes
       Default: false
    --escapeUnicodeCharacters, -eu
       escape unicode characters in decompiled classes
       Default: false
    --help, -h
       shows this help
       Default: false
    --logLevel, -g
       takes [level] as parameter and sets it as the CLI log level. Possible
       values are: ALL, TRACE, DEBUG, INFO, WARN, ERROR, OFF
       Default: INFO
    --outputConsole, -oc
       enables output to system output stream
       Default: false
    --outputDir, -od
       takes a [directoryPath] as a parameter and configures a flat DIR output
       for this path
    --outputDirStructured, -ods
       takes a [directoryPath] as a parameter and configures a structured DIR
       output for this path
    --outputZipFile, -oz
       takes a [zipFilePath] as a parameter and configures ZIP output for this
       path
    --pattern, -p
       RegExp pattern which the to-be-decompiled file has to match. Not matching
       entries are skipped.
    --serialProcessing, -sp
       don't use parallel processing
       Default: false
    --skipResources, -sr
       skips processing resources
       Default: false
    --version, -v
       shows the version
       Default: false

Docker

You can use a Docker distribution to decompile your classes.

For instance, the following command decompiles the file-to-decompile.jar in the current directory and the decompiled files are stored in the decompiled-src directory.

docker run -it --rm -v `pwd`:/mnt --user $(id -u):$(id -g) \
  kwart/jd-cli /mnt/file-to-decompile.jar -od /mnt/deccompiled-src

Using as a Maven dependency

<dependency>
    <groupId>com.github.kwart.jd</groupId>
    <artifactId>jd-lib</artifactId>
    <version>${jd-cli.version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>${slf4j.version}</version>
</dependency>
public static void main(String[] args) {
    JDInput input = new ZipFileInput("/opt/hazelcast/hazelcast.jar");
    JDOutput output = new DirOutput(new File("/tmp/hz-src"));
    JavaDecompiler decompiler = new JavaDecompiler(new DecompilerOptions() {

        @Override
        public boolean isSkipResources() {
            return true;
        }

        @Override
        public boolean isEscapeUnicodeCharacters() {
            return false;
        }

        @Override
        public boolean isDisplayLineNumbers() {
            return true;
        }

        @Override
        public boolean isParallelProcessingAllowed() {
            return true;
        }
    });
    input.decompile(decompiler, output);
}

Credits

This project was originally forked from JDCommandLine.

License

  • jd-cli is licensed under GPLv3 as the original JD-Core library.