99 votes

Comment obtenir le chemin du programme java en cours d'exécution

Est-il possible d'obtenir le chemin de la classe principale de l'exécution d'un programme en java.

la structure est

D:/
|---Project
       |------bin
       |------src

Je veux obtenir le chemin d'accès en D:\Project\bin\.

J'ai essayé d' System.getProperty("java.class.path"); mais le problème est que si je cours comme

java -classpath D:\Project\bin;D:\Project\src\  Main

Output 
Getting : D:\Project\bin;D:\Project\src\
Want    : D:\Project\bin

Est-il possible de faire cela?

===== EDIT =====

Eu la solution ici

141voto

René Link Points 9136

Utilisation

 System.getProperty("java.class.path")
 

voir http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html

Vous pouvez également le scinder facilement en éléments

 String classpath = System.getProperty("java.class.path");
String[] classpathEntries = classpath.split(File.pathSeparator);
 

106voto

Juned Ahsan Points 33217

Essayez ce code:

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

remplacez 'MyClass' par votre classe contenant la méthode main

27voto

AlexR Points 60796

En fait, vous ne voulez pas obtenir le chemin de votre classe principale. Selon votre exemple, vous voulez obtenir le répertoire de travail actuel, c’est-à-dire le répertoire où votre programme a démarré. Dans ce cas, vous pouvez simplement dire new File(".").getAbsolutePath()

3voto

Ganesh Rengarajan Points 1268
    ClassLoader cl = ClassLoader.getSystemClassLoader();

    URL[] urls = ((URLClassLoader)cl).getURLs();

    for(URL url: urls){
        System.out.println(url.getFile());
    }

-3voto

Manish Doshi Points 732

Les chaînes sont toujours immutabble . Donc, vous devriez stocker ce classpath dans une variable. Il suffit de stocker classpath dans une variable de chaîne telle que:

  String classpath = System.getProperty("java.class.path");
 System.out.println(classpath);
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X