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?
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?
ritorna la directory di lavoroCodice PHP:
System.getProperty("user.dir");
Al mio segnale... scatenate l'inferno!
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).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?
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.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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.