I know the guys over at Java Decompiler don’t want to release a command line tool, because they fear that companies will use their code in commercial product. See the discussion here. I found a solution to my problem, so that I can still automate the decompilation process. During my Android research I really need to decompile a lot of jar files, therefore I wrote a simple AppleScript that saves me the sources to my /opt folder.
tell application "JD-GUI" activate end tell tell application "System Events" keystroke "s" using {command down, option down} end tell tell application "System Events" keystroke tab keystroke tab keystroke tab key code 125 #Down key code 125 #Down key code 125 #Down key code 125 #Down key code 125 #Down key code 36 #Enter delay 1 key code 36 #Enter delay 2 end tell repeat while appIsRunning("JD-GUI") tell application "System Events" keystroke "q" using {command down} #Close JD-GUI end tell delay 2 end repeat on appIsRunning(appName) tell application "System Events" to (name of processes) contains appName end appIsRunning
After saving the script as decompile_jar.applescript with the AppleScript Editor, you can invoke it from your bash script like this:
/Applications/JD-GUI.app/Contents/MacOS/jd-gui example.jar & sleep 1 osascript decompile_jar.applescript mv /opt/example.src.zip /your/destination
I did the same for windows using Windows Scripting Host API but not a reliable hack. timing is the main issue.