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