Command line packaging: https://github.com/kwart/jd-cmd
Not 100% perfect, but does a good job.
Vs javap: generates compilable source code, while javap can only generate the bytecode.
Loses of course any inlined information like static final primitives, and if the .class had been