just a thought:
if you run your app with the vm argument -verbose:class it outputs the classname as soon a specific class is loaded. save this output in a textfile, parse it an check all required jars against this file.
now it is possible to write new jars which only include the required classfiles.
i've written a little tool which is capable doing this. just a hack, but it worked for me.
the only problem is for classes which get loaded later on execution...
it was actually possible to hack the rt.jar, which size dropped dramatically (but i think it's not legal to distribute such a hacked rt.jar

)