Obtenir le chemin du système de fichiers de la classe en cours d’exécution

Est-il possible de déterminer l’emplacement actuel du système de fichiers de la classe exécutée à partir du code de cette classe, à 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(Ssortingng[] args){\ new MyClass().doStuff(); } private void doStufF(){ Ssortingng 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 correct dans le système de fichiers du fichier MyClass.class simplement appelé?

De même, si j’appelle un fichier jar depuis la commande java -jar , existe-t-il un moyen d’obtenir un chemin de fichier jar depuis les classes à l’intérieur de ce fichier jar?

PS: S’il vous plaît, ne faites aucune hypothèse sur le répertoire de travail à partir duquel la commande java est appelée!

L’extrait de code suivant fera cela pour vous:

 final File f = new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath()); 

remplacer MyClass par votre classe main

L’object File résultant f représente le fichier .jar exécuté. Vous pouvez utiliser cet object pour que le parent trouve le répertoire dans lequel se trouve le .jar .