Java Cannery fixes all that. It's a pure-Java application that decompiles and recursively scans a target class for all its dependencies and packages them up into a jar file for you.