Maxime,
Here's an ugly hack of getting this done.
Assuming you know where the reports are going to be made available, why not build a utility method which when invoked would move/copy the reports to a different location. This utility would then be called from within a Shutdown hook. That way you have an assurance that the JVM would invoke it just before it gets killed [ yes there are some caveats around using shutdown hooks, but I think that should solve your purpose no ? ]
The other option is basically to build a new reporter [ one which implements IReporter interface ] which when invoked would spin off a new Thread, which would keep an eye on the location where the reports are going to be generated and as soon as the reports are made available, it would perform the move/copy operation and then shut itself down.