Devi togliere anche la parte iniziale, quel "file:"
Ad ogni modo, giusto per mettere in chiaro le cose, quando si ha a che fare con i file con percorso "relativo", il percordo è appunto relativo alla current working directory (directory di lavoro corrente), che per il 90% dei casi è assolutamente dipendente dal sistema operativo.
Quasi mai la directory corrente è la stessa del JAR. Ne è un esempio l'avvio con doppio clic dal desktop. Quando si è sul desktop, la directory corrente può essere il desktop stesso o, come nel tuo caso, la home directory dell'utente. Difficilmente sarà la directory del JAR.
Per questo bisogna sempre prestare attenzione a come si costruiscono le applicazione che fanno uso dei file. O si imposta un batch di avvio che, come prima cosa, si posiziona nella directory del JAR (così si ha una certa sicurezza che la CurrentWorkingDirectory sia esattamente quella del JAR) oppure si ricorre a stratagemmi:
1) Si recupera il PATH del JAR (come ha evidenziato Andrea1979 o come ho evidenziato in altri post io)
2) Si adotta una directory fissa che l'applicazione userà (e che creerà se inesistente)
3) Ci si appoggia ad una directory "nota" dal sistema operativo (tipo la home-directory dell'utente).
Inoltre si deve seguire rigorosamente una regola: MAI usare delle stringhe fisse per il separatore di percorso (come quello slash nel indexOf() ). Appena si cambia piattaforma succedono i più assurdi disastri. Per queste cose esiste la costante File.separator che viene inizializzata dalla JVM in base alla piattaforma in cui si opera. C'è anche File.pathSeparator, che serve a capire qual è il separatore di percorsi (il punto e virgola su Windows, i due punti su Unix/Linux, ecc).
Ciao.![]()



Rispondi quotando
