Esiste un modo per determinare il percorso corrente del file della classe eseguita dal codice di questa classe, in runtime, dato che viene eseguito utilizzando il comando java
?Ottenere il percorso di classe del file in esecuzione
Ad esempio per le seguenti classe:
public class MyClass{
public static void main(String[] args){\
new MyClass().doStuff();
}
private void doStufF(){
String path = ... // what to do here?!
System.out.println("Path of class being invoked: " + path);
}
}
Esiste un modo per ottenere e stampare il percorso corretto nel file system del file di MyClass.class solo di essere invocato?
Analogamente, se invoco il file jar dal comando java -jar
, esiste un modo per ottenere un percorso del file jar all'interno delle classi all'interno di tale jar?
P.S.:Si prega, non fare ipotesi sulla directory di lavoro da cui è stato richiamato il comando java
!
Attenzione quando si esegue questa operazione: se il file di classe si trova in una directory che contiene uno spazio, la stringa restituita (che è il parte del percorso di un URL, che getLocation() restituisce, ed è quindi codificato URL) conterrà '% 20' invece di spazi! –
@JandeVos L'uso del costruttore 'File (java.net.URI)' sembra risolvere il problema. – Spooky
@ Commento di Spooky: quindi deve essere 'File finale f = nuovo File (MyClass.class.getProtectionDomain(). GetCodeSource(). GetLocation(). GetURI(). GetPath());' –