La property "user.dir" restituisce la directory "home" dell'utente... che nulla ha a che vedere (in linea di principio) con la directory del programma in esecuzione.
Se la tua applicazione risiede dentro ad un Jar e vuoi ottenere il percorso di quel JAR, questo metodo può fare al caso tuo:
codice:
private static String getMyPath() {
String str = NomeClasse.class.getResource("NomeClasse.class").toExternalForm();
int start = 0;
int end = str.indexOf("NomeDelJar.jar");
if ( str.startsWith("jar:") ) {
start = 4;
if (str.indexOf("file:/") >= 0) {
start += 6;
}
}
str = str.substring(start, end);
str = str.replaceAll("%20", " ");
return str;
}
Questo metodo restituisce il percorso fisico della directory che contiene il JAR che contiene la tua classe (ovviamente dovrai sostituire a "NomeClasse" il nome della classe e a "NomeDelJAR" il nome del file JAR.
Ciao.