PROCYON(1)
π PROCYON(1) β the girlies' guide to the Procyon Java decompiler π
okay bestie, sit down, grab your iced coffee β because this is the manual page for procyon, and honestly? it's giving main character energy in a world full of mid decompilers. no cap.
β¨ SYNOPSIS β¨
procyon [options] <type names or class/jar files>
likeβ¦ that's it. that's the whole vibe. options, then some type names or class/jar files, and we go π¦
πΈ DESCRIPTION πΈ
so Procyon is a Java decompiler, right? and the thing about her is she actually handles the language glow-ups from Java 5 and beyond that most other decompilers simply cannot deal with. like, they fumble, she does not. π
and it's not just that β she excels in the areas where the others fall short. lowkey embarrassing for them, honestly. here's where Procyon really pops off:
- Enum declarations
- Enum and String switch statements
- Local classes (both anonymous and named, queen behavior)
- Annotations
- Java 8 Lambdas and method references
no notes. ate. π
π output modes π
Procyon serves three whole output modes, pick your fighter:
- Java β this is the default one, the classic, the moment
- Raw Bytecode β similar to
javap, but prettier. run it with-r - Bytecode AST β an intermediate representation. run it with
-b, and add-uif you want it unoptimized
π§ what even is an input π§
you can pass one or more types as an argument and Procyon will process them. the input types can be:
- fully-qualified names in dotted or binary form β like
java.lang.Stringorjava/lang/String - relative or absolute file paths β like
path/to/MyClass.class - or literally whole jar files
and if you hand her a type name? she'll go try to load it out of the user or bootstrap classpath. she's resourceful like that π«Ά
β¨ OPTIONS β¨
every single one, bestie. we do not skip. that would be disrespectful.
-b,--bytecode-astβ output the Bytecode AST instead of Java. Default:false-ci,--collapse-importsβ collapse multiple imports from the same package into one single wildcard import. Default:false-cp,--constant-poolβ includes the constant pool when you're displaying raw bytecode (unnecessary with-v). Default:false-dl,--debug-line-numbersβ for debugging, show Java line numbers as inline comments (implies-ln; requires-o). Default:false--disable-foreachβ disable'for each'loop transforms. Default:false-eml,--eager-method-loadingβ enable eager loading of method bodies (may speed up decompilation of larger archives). Default:false-ent,--exclude-nestedβ exclude nested types when decompiling their enclosing types. Default:false-ei,--explicit-importsβ [DEPRECATED] explicit imports are now enabled by default. this option will be removed in a future release. Default:false-eta,--explicit-type-argumentsβ always print type arguments to generic methods. Default:false-fsb,--flatten-switch-blocksβ drop the braces statements around switch sections when possible. Default:false-?,--helpβ display this usage information and exit. Default:false-jar,--jar-fileβ [DEPRECATED] decompile all classes in the specified jar file (disables-entand-s).-lc,--lightβ use a color scheme designed for consoles with light background colors. Default:false-lv,--local-variablesβ includes the local variable tables when displaying raw bytecode (unnecessary with-v). Default:false-ll,--log-levelβ set the level of log verbosity (0-3). Level0disables logging. Default:0-mv,--merge-variablesβ attempt to merge as many variables as possible. this may lead to fewer declarations, but at the expense of inlining and useful naming. this feature is experimental and may be removed or become the standard behavior in future releases. Default:false-o,--output-directoryβ write decompiled results to the specified directory instead of the console.-r,--raw-bytecodeβ output Raw Bytecode instead of Java (to control the level of detail, see:-cp,-lv,-ta,-v). Default:false-ec,--retain-explicit-castsβ do not remove redundant explicit casts. Default:false-ps,--retain-pointless-switchesβ do not lift the contents of switches having only a default label. Default:false-ss,--show-syntheticβ show synthetic (compiler-generated) members. Default:false-sm,--simplify-member-referencesβ simplify type-qualified member references in Java output [EXPERIMENTAL]. Default:false-sl,--stretch-linesβ stretch Java lines to match original line numbers (only in combination with-o) [EXPERIMENTAL]. Default:false-ta,--type-attributesβ includes type attributes when displaying raw bytecode (unnecessary with-v). Default:false--unicodeβ enable Unicode output (printable non-ASCII characters will not be escaped). Default:false-u,--unoptimizedβ show unoptimized code (only in combination with-b). Default:false-v,--verboseβ includes more detailed output depending on the output language (currently only supported for raw bytecode). Default:false--versionβ display the decompiler version and exit. Default:false-ln,--with-line-numbersβ include line numbers in raw bytecode mode; supports Java mode with-oonly. Default:false
π«Ά little reminder bestie: the[DEPRECATED]ones are on their way out, and the[EXPERIMENTAL]ones might change under you. not being dramatic, just accurate. π
π EXAMPLES π
decompile a single class to the console
$ procyon java.lang.String
$ procyon java.util.Collections
two bangers, back to back. iconic.
decompile a whole jar to a directory
$ procyon myJar.jar -o out
the whole jar?? to a directory?? yes. -o out. she ate that.
decompile a single class from a jar
$ CLASSPATH=myJar.jar procyon com.example.Foo
set CLASSPATH, name your class, go. iykyk π¦
π SEE ALSO π
go read the wiki bestie, it's right there π
and that's the whole manual, babes. this was procyon 0.5.32, dated October 2016 β yeah she's vintage, and vintage is a vibe. stay decompiling, stay hydrated, mwah π β¨
π¦ where this page comes from
- debian bookworm: procyon-decompiler 0.6.0-1 Β· Apache-2.0
- debian trixie: procyon-decompiler 0.6.0-3 Β· Apache-2.0
- ubuntu jammy: procyon-decompiler 0.5.36-1 Β· Apache-2.0
- ubuntu noble: procyon-decompiler 0.6.0-1ubuntu1 Β· Apache-2.0
- ubuntu questing: procyon-decompiler 0.6.0-3
- ubuntu resolute: procyon-decompiler 0.6.0-3ubuntu1 Β· Apache-2.0
- ubuntu stonking: procyon-decompiler 0.6.0-3ubuntu1 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms