Aggiungo che se devi eseguire un comando passandogli dei parametri, allora conviene usare la versione di Runtime.exec() con gli array di String... la versione che prende tutto il comando in una sola stringa a volte può causare dei problemi (purtroppo, già sperimentati).

Altra cosa: in questo codice stai concatenando due stringhe fisse:

codice:
String executeCmd = "mysqldump -u " + user + " -p" + password + " --add-drop-database -B customers "  + " -r " + curdir + File.separator+filename;

Non è un "errore", è una inefficienza...


codice:
String executeCmd = "mysqldump -u " + user + " -p" + password + "  --add-drop-database -B customers -r " + curdir +  File.separator+filename;


Ciao.