Based on some ideas formed when making this utiltiy i now have a preliminary process which seems to give approximatly 50-100 extra bytes.
This is based on embedding a pack200 compressed version of the optimised jar file (i.e. one which has been through the 4KJO optimiser) onto the end of a “launcher” class file.
This launcher class reads the embedded pack200 compressed jar, converts it into a normal JAR, adds the normal JAR into a classloader and then calls the constructor of the “main” class.
Since there is some foolery with File and ClassLoader the resulting JAR will need to be signed, or be an executable JAR.
I have attached an executable version of “Starship Invaders” which has been compressed from 4093 bytes to 4,034 bytes.
I hope with further optimisations of the launch class I can increase the gain.