Io ci aggiungerei anche un -y al shutdown in modo che non ti chieda la conferma di chiusura se ci sono programmi aperti (in windows xp esisteva questo parametro, vedi se vale anche nel sistema dove devi utilizzarlo tu).
Inoltre scusa, non sarebbe meglio che, in base all'ora e minuti di spegnimento, tu calcolassi il tempo in secondi che mancano allo spegnimento e lanciassi direttamente il comando (chiudendo quindi l'applicazione Java) con il valore -t e i secondi restanti allo spegnimento?
...in questo modo delegeresti direttamente l'operazione al sistema operativo senza tenere un'altra applicazione aperta.
Non sono esperto di Java, ho fatto solo un'analisi del problema!
Roberto