Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [Java]Directory dove si trova il jar che eseguo

    Io ho un'applicazione che usa javadb ma ho notato che il db lo crea nella home dell'utente c'è un metodo che mi permetta di recuperare la directory dove si trova il jar in esecuzione?

  2. #2
    Codice PHP:
    System.getProperty("user.dir"); 
    ritorna la directory di lavoro
    Al mio segnale... scatenate l'inferno!

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [Java]Directory dove si trova il jar che eseguo

    Originariamente inviato da lordkarolus
    Io ho un'applicazione che usa javadb ma ho notato che il db lo crea nella home dell'utente c'è un metodo che mi permetta di recuperare la directory dove si trova il jar in esecuzione?
    La risposta direi che è "nì" (né si né no). Nel senso che non c'è nulla di "standard" per saperlo. Una possibilità però ci sarebbe. Se lanci l'applicazione con java -jar app.jar, il "classpath" è composto solo dal tuo jar (più altri eventuali jar elencati nel manifest) ma la proprietà di sistema "java.class.path" contiene solo il nome del tuo jar (con path relativo alla current working directory).

    Quindi se lanci ad esempio java -jar unadir/app.jar, il path "unadir/app.jar" è relativo alla directory corrente e nella proprietà "java.class.path" avrai appunto "unadir/app.jar". A questo punto ti basta usare la classe File per ottenere la directory.

    Una cosa del tipo:

    File f = new File (System.getProperty ("java.class.path"));
    File dir = f.getAbsoluteFile ().getParentFile ();


    Ci sono ovviamente molte altre alternative per stabilire dove mettere o gestire altri eventuali file/directory della applicazione (file di log, db, ecc...):

    a) Usare la current working directory, cioè sfruttare la proprietà di sistema "user.dir" il cui contenuto è chiaro e ben definito: la directory corrente. Chiaramente prima di lanciare la applicazione bisogna assicurarsi che la directory corrente sia quella in cui risiede il jar (e qui dipende da come viene lanciata la applicazione).

    b) Usare la "home" directory dell'utente, proprietà "user.home".

    c) Passare in input alla applicazione (sulla linea di comando) la directory.

    d) Usare un eventuale file di configurazione (che contiene la informazione sulla directory) magari posizionato in una locazione fissa/prestabilita o nella "home" directory o altro.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    151
    Ho risolto leggendo la discussione.
    In pratica ho usato queste due righe di codice per ottenere il path con il quale è lanciato il file JAR.

    File f = new File (System.getProperty ("java.class.path"));
    File dir = f.getAbsoluteFile ().getParentFile ();


    Grazie a tutti in particolare ad andbin.

    Saluti.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.