Retrouver le répertoire de ma classe principale

Retrouver le répertoire de ma classe principale - Java - Programmation

Marsh Posté le 17-03-2003 à 16:31:32    

Admettons que j'ai une application "abc.class" stocké dans mon C:\Temp
 
Si je la lance depuis mon D:\Temp avec la ligne de commande
suivante :  
 
java C:\Temp\abc
 
Comment retrouver depuis mon application dans quel répertoire elle est stocké (cad retrouver mon C:\Temp)
 
Merci de vos réponses :)
 
EDIT : Je vais poser la question autrement, comment afficher à l'écran le path de ma classe principale cad C:\Temp\abc.class alors que je l'ai exécuté depuis un autre répertoire (le répertoire courant n'est donc pas ce C:\Temp)


Message édité par haricovert le 17-03-2003 à 16:44:20
Reply

Marsh Posté le 17-03-2003 à 16:31:32   

Reply

Marsh Posté le 17-03-2003 à 16:33:07    

Essaye :
 
File f = new File("." );
System.out.println(f.getAbsolutePath());
 
EDIT: ooops, rien compris à la question le Krosso...


Message édité par krosso le 17-03-2003 à 16:34:01
Reply

Marsh Posté le 17-03-2003 à 16:35:15    

Bon j'ai pas encore essayé mais à mon avis sa va me répondre :
D:\Temp\ vu que je la lance depuis mon D:\Temp\ cé donc mon répertoire courant :P D'autres idées :)

Reply

Marsh Posté le 17-03-2003 à 16:54:06    

haRICOvert a écrit :

Bon j'ai pas encore essayé mais à mon avis sa va me répondre :
D:\Temp\ vu que je la lance depuis mon D:\Temp\ cé donc mon répertoire courant :P D'autres idées :)


Je confirme !


---------------
get amaroK plugin
Reply

Marsh Posté le 17-03-2003 à 17:00:29    

bobuse a écrit :


Je confirme !


oui, bien sûr.


Message édité par krosso le 17-03-2003 à 17:01:01
Reply

Marsh Posté le 17-03-2003 à 17:01:58    

Je me souviens plus, mais System.getProperty("user.dir" ), ça fait pareil ?


---------------
get amaroK plugin
Reply

Marsh Posté le 17-03-2003 à 17:08:54    

Sa marche  :bounce:  Je te remercie bobuse  :wahoo:

Reply

Marsh Posté le 17-03-2003 à 17:16:34    

haRICOvert a écrit :

Sa marche  :bounce:  Je te remercie bobuse  :wahoo:  


cool :sol:


---------------
get amaroK plugin
Reply

Marsh Posté le 17-03-2003 à 17:25:44    

moi je note [:xp1700]

Reply

Marsh Posté le 17-03-2003 à 18:02:21    

J'comprend pas bien ce que ça contient cette propriété "user.dir".
On peut très bien exéuter des classes qui sont dans des répertoires différents...

Reply

Marsh Posté le 17-03-2003 à 18:02:21   

Reply

Marsh Posté le 17-03-2003 à 18:11:05    

ça doit être le répertoire du main() exécuté je pense...

Reply

Marsh Posté le 17-03-2003 à 23:04:40    

Predicator a écrit :

ça doit être le répertoire du main() exécuté je pense...


 
c'est ca. C'est le répertoire dans lequel tu démarres la virtual machine


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 17-03-2003 à 23:57:16    

DarkLord a écrit :


 
c'est ca. C'est le répertoire dans lequel tu démarres la virtual machine

c'est pas ça qu'ils cherchent alors...


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 18-03-2003 à 00:03:13    

the real moins moins a écrit :

c'est pas ça qu'ils cherchent alors...


 
bin nan justement  :o


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-03-2003 à 00:07:10    

Ouais effectivement spa ça :/
Je m'étais deja poser la question en fait :
Comment une appli Java peut connaitre son repertoire d'installation, et en fait, je m'eatis dit qu'il fallait une procedure d'installation pour stocker le chemin du bin ... Par exemple, JEdit a un launcher qui permet de configurer tout ça ... a suivre


---------------
get amaroK plugin
Reply

Marsh Posté le 18-03-2003 à 00:11:04    

bobuse a écrit :

Ouais effectivement spa ça :/
Je m'étais deja poser la question en fait :
Comment une appli Java peut connaitre son repertoire d'installation, et en fait, je m'eatis dit qu'il fallait une procedure d'installation pour stocker le chemin du bin ... Par exemple, JEdit a un launcher qui permet de configurer tout ça ... a suivre

ben théoriquement un jar s'autosuffit nan?
apres s'il a besoin de fichiers externes, bah, path relatif, il trouve un fichier de config, et voila.
je vois pas bien l'interet de connaitre son emplacement :??:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 18-03-2003 à 07:45:06    

the real moins moins a écrit :

ben théoriquement un jar s'autosuffit nan?
apres s'il a besoin de fichiers externes, bah, path relatif, il trouve un fichier de config, et voila.
je vois pas bien l'interet de connaitre son emplacement :??:


 
parce que dans une appli tu ne peux pas tout mettre dans un jar tout simplement. Et pour le coup du path relatif ca suppose que tu as une procédure d'installation qui met à jour tes fichiers de conf, ce qui n'est pas trivial.
 
pour eConf par exemple, j'utilise nullsoft installer pour windows qui lance un petit script qui met à jour les fichiers de config (log4j, etc). Pour linux , un script bash suffit (bientot rpm :whistle:)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-03-2003 à 09:31:52    

DarkLord a écrit :


 
parce que dans une appli tu ne peux pas tout mettre dans un jar tout simplement. Et pour le coup du path relatif ca suppose que tu as une procédure d'installation qui met à jour tes fichiers de conf, ce qui n'est pas trivial.
 
pour eConf par exemple, j'utilise nullsoft installer pour windows qui lance un petit script qui met à jour les fichiers de config (log4j, etc). Pour linux , un script bash suffit (bientot rpm :whistle:)


ha d'accord  [:meganne]  
merci d'avoir confirmé
 :jap:


---------------
get amaroK plugin
Reply

Marsh Posté le 18-03-2003 à 12:07:04    

DarkLord a écrit :


 
parce que dans une appli tu ne peux pas tout mettre dans un jar tout simplement. Et pour le coup du path relatif ca suppose que tu as une procédure d'installation qui met à jour tes fichiers de conf, ce qui n'est pas trivial.


ben tu as un fichier resources dans ton jar qui donne le nom et l'emplacement du fichier de config (relatif ou du genre user.home/.monappli/myconf.ini) et voili voilou. Dans ce fichier de config soit t'as des paths qui seront relatif soit absolus, je vois pas ce qu'irait y foutre une procedure d'install qui modifierais ce fichier :??:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 20-03-2003 à 01:47:18    

Bon j'ai code ca a l'arrache et je suis creve donc un peu d'indulgence...
 
 ;)  
 
Pour l'utiliser il faut avoir le nom de la classe : "package.souspackage.NomClasse". La methode itere sur le classpath et cherche si une classe avec le nom donne se trouve dans le classpath, si oui, le chemin est renvoye, si rien n'est trouve elle lance une ClassNotFoundException
 
 

Code :
  1. public static String getClassLocation(String className)
  2.         throws ClassNotFoundException {
  3.         // Variables definition
  4.         ZipFile zipFile;
  5.         // We change "." to system's file separator character
  6.         String fileName = className.replace('.', File.separatorChar) +
  7.             ".class";
  8.         // We construct the class path
  9.         StringTokenizer classPath = new StringTokenizer(System.getProperty(
  10.                     "java.class.path", "." ),
  11.                 System.getProperty("path.separator" ));
  12.         // We iterate over the class path and try to find a class file corresponding to the class name
  13.         while (classPath.hasMoreTokens()) {
  14.             String file = classPath.nextToken();
  15.             // We search in Jar and Zip file
  16.             // Note : for jdk 1.1 compliance we cannot use the java.util.jar
  17.             //        class but it seems to be possible to read jar files thru
  18.             //        the java.util.zip class
  19.             if (file.endsWith(".jar" ) || file.endsWith(".zip" )) {
  20.                 zipFile = null;
  21.                 try {
  22.                     zipFile = new ZipFile(file);
  23.                    
  24.                     // if zip file contains an entry with the class name we return the classpath token
  25.                     if (zipFile.getEntry(fileName) != null) return file;
  26.                 } catch (Exception e) {
  27.                 } finally {
  28.                     try {
  29.                         zipFile.close();
  30.                     } catch (Exception e) {
  31.                     }
  32.                 }
  33.             }
  34.             // We search in .class files
  35.             // if a file with the name of the class is found at a given place, we return the classpath token
  36.             if (new File(file + File.separatorChar + fileName).exists()) {
  37.                 return file;
  38.             }
  39.         }
  40.         // We reached the end of iteration over the class path and found no class file. Let's throw an Exception !
  41.         throw new ClassNotFoundException(className);
  42.     }


 
Bye


Message édité par phenixl le 20-03-2003 à 01:51:41
Reply

Marsh Posté le 20-03-2003 à 01:58:02    

[:xp1700]
 
(tu pourrais au moins faire qqchose quand tu catches Exception là :o)
 
enfin, super quand meme :D


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 20-03-2003 à 03:11:08    

the real moins moins a écrit :

[:xp1700]
 
(tu pourrais au moins faire qqchose quand tu catches Exception là :o)
 
enfin, super quand meme :D


 
j'avais la flemme  :whistle:

Reply

Marsh Posté le 20-03-2003 à 08:53:16    

Ouais, bravo.
Par contre, à mon avis, 'faut pas être trop pressé. Suffit qu'on ai quelques grosses lib dans le classpath, et le parcours peut vite devenir très très long...

Reply

Marsh Posté le 20-03-2003 à 10:03:13    

El_gringo a écrit :

Ouais, bravo.
Par contre, à mon avis, 'faut pas être trop pressé. Suffit qu'on ai quelques grosses lib dans le classpath, et le parcours peut vite devenir très très long...


 
rabat-joie  :kaola:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 20-03-2003 à 10:11:59    

DarkLord a écrit :


 
rabat-joie  :kaola:  


 
rabat-rabat-joie :kaola:  
car dans les faits, il a pas tort :lol:
 
en tout cas, bon boulot cette classe [:xp1700]


Message édité par Predicator le 20-03-2003 à 10:12:49
Reply

Marsh Posté le 20-03-2003 à 10:40:40    

Citation :

en tout cas, bon boulot cette classe [:xp1700]

stune méthode  ;)  
 
Mais en effet, merci bcp, ça va mez servir pas plus tard que maintenant.
 
 :jap:


Message édité par krosso le 20-03-2003 à 10:41:08
Reply

Marsh Posté le 20-03-2003 à 10:51:51    

El_gringo a écrit :

Ouais, bravo.
Par contre, à mon avis, 'faut pas être trop pressé. Suffit qu'on ai quelques grosses lib dans le classpath, et le parcours peut vite devenir très très long...


 
Si c'est ce qu'il veut je ne vois pas d'autre methode...
 
Quant a la scalabilite de la chose as tu essaye ? ;)

Reply

Marsh Posté le 20-03-2003 à 11:46:57    

krosso a écrit :

Citation :

en tout cas, bon boulot cette classe [:xp1700]

stune méthode  ;)


 :whistle:

Reply

Marsh Posté le 20-03-2003 à 11:57:52    

D'ailleurs, ca existe un site de ressources Java ou on pourrait trouver/deposer des trucs de ce genre ?


---------------
get amaroK plugin
Reply

Marsh Posté le 02-01-2004 à 15:49:02    

bobuse a écrit :

D'ailleurs, ca existe un site de ressources Java ou on pourrait trouver/deposer des trucs de ce genre ?


 
hachaifaire?

Reply

Marsh Posté le 03-07-2008 à 08:52:46    

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed