Existe-t-il un moyen de déterminer l'emplacement actuel du système de fichiers de la classe exécutée à partir du code de cette classe, lors de l'exécution, étant donné qu'il est exécuté à l'aide de la commande Java
?
Par exemple pour la classe suivante:
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);
}
}
Existe-t-il un moyen d'obtenir et d'imprimer le chemin d'accès correct dans le système de fichiers du fichier MyClass.class qui vient d'être appelé?
De même, si j'appelle un fichier jar depuis Java -jar
commande, existe-t-il un moyen d'obtenir un chemin de fichier jar à partir des classes à l'intérieur de ce pot?
P.S.:Veuillez, ne faites aucune hypothèse sur le répertoire de travail à partir de laquelle la commande Java
est invoquée!
L'extrait de code suivant le fera pour vous:
final File f = new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath());
remplacez MyClass
par votre classe main
L'objet File
résultant f
représente le .jar
fichier exécuté. Vous pouvez utiliser cet objet pour que le parent trouve le répertoire que le .jar
est dans.