I should warn you however, Windows Vista won't let you do this unless your application is installed somewhere under the current user's home directory. If you try to do it somewhere else, it'll act like it's working, but then fail miserably (Vista automatically redirects the downloads to some obscure user directory). Webstart still ends up being the best bet for autoupdates because of this... too bad it's so ugly.
Don't download the updated jars to the application directory, but to a dedicated "updates" directory somewhere under FileSystemView.getFileSystemView().getDefaultDirectory() like
1
| File updateLocation = new File(FileSystemView.getFileSystemView().getDefaultDirectory(), "My Fancy Game Title/updates") |
In the launcher, set up two URLClassloaders, one with the updated jars (updatesClassloader) from this location and one with the original application jars (appClassloader). Important: set the updatesClassloader as parent of the appClassloader to make sure, your updated classes are loaded first. Then you can load your games main class from the appClassloader, and call the main-method via reflection.