Home / Programmazione / Java / Identificare il percorso corrente del Jar
Mattepuffo

Identificare il percorso corrente del Jar

Identificare il percorso corrente del Jar

Capita che le nostre applicazioni abbiamo dei file che servono al programma stesso.

In genere questi files si mettono o nella home dell'utente, o nella directory del Jar che lanciamo.

Vediamo appunto come identificare la directory del Jar principale.

Come mi è stato specificato nel forum di HTML.it, non dobbiamo preoccuparci se stiamo sotto Linux, Mac o Windows; sarà la JVM a tradurre i sepatatori di percorso (gli slash) in bakslash quando lanciamo il programma sotto Windows.

Possiamo crearci quindi una nostra classe e piazzarci dentro questa funzioncina:

import java.io.UnsupportedEncodingException;

public class Utils {

    public String jarPath() throws UnsupportedEncodingException {
        String pathJar = this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
        int p = pathJar.lastIndexOf(":");
        int s = pathJar.lastIndexOf("/");
        String path = pathJar.substring(p + 1, s + 1);
        return path;
    }
}

La stringa jarPath identifica tutto il percorso, compreso il Jar; quindi ad esempio:

/home/utente/MyJava/file.jar

Per capire perchè eseguo le operazioni sottostanti, fatevi stampare pathJar e trovate dove stanno i problemi.

Più facile che lo vediate che piuttosto che ve lo spiego io.

A questo punto dove abbiamo bisogno richiamiamo questa funzione e appendiamoci il nostro file:

Utils u = new Utils();

String fileCheServe = u.jarPath() + "myfile.txt";

Easy!