Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1279 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Retrouver le répertoire de ma classe principale

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Retrouver le répertoire de ma classe principale

n°335495
haricovert
Posté le 17-03-2003 à 16:31:32  profilanswer
 

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
mood
Publicité
Posté le 17-03-2003 à 16:31:32  profilanswer
 

n°335500
krosso
j'suis à la bourre
Posté le 17-03-2003 à 16:33:07  profilanswer
 

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
n°335502
haricovert
Posté le 17-03-2003 à 16:35:15  profilanswer
 

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 :)

n°335546
bobuse
Posté le 17-03-2003 à 16:54:06  profilanswer
 

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
n°335568
krosso
j'suis à la bourre
Posté le 17-03-2003 à 17:00:29  profilanswer
 

bobuse a écrit :


Je confirme !


oui, bien sûr.


Message édité par krosso le 17-03-2003 à 17:01:01
n°335572
bobuse
Posté le 17-03-2003 à 17:01:58  profilanswer
 

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


---------------
get amaroK plugin
n°335584
haricovert
Posté le 17-03-2003 à 17:08:54  profilanswer
 

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

n°335598
bobuse
Posté le 17-03-2003 à 17:16:34  profilanswer
 

haRICOvert a écrit :

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


cool :sol:


---------------
get amaroK plugin
n°335603
Predicator
Posté le 17-03-2003 à 17:25:44  profilanswer
 

moi je note [:xp1700]

n°335642
El_gringo
Posté le 17-03-2003 à 18:02:21  profilanswer
 

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...

mood
Publicité
Posté le 17-03-2003 à 18:02:21  profilanswer
 

n°335652
Predicator
Posté le 17-03-2003 à 18:11:05  profilanswer
 

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

n°335942
darklord
You're welcome
Posté le 17-03-2003 à 23:04:40  profilanswer
 

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
n°335970
the real m​oins moins
Posté le 17-03-2003 à 23:57:16  profilanswer
 

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 ?
n°335974
darklord
You're welcome
Posté le 18-03-2003 à 00:03:13  profilanswer
 

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
n°335976
bobuse
Posté le 18-03-2003 à 00:07:10  profilanswer
 

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
n°335980
the real m​oins moins
Posté le 18-03-2003 à 00:11:04  profilanswer
 

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 ?
n°336014
darklord
You're welcome
Posté le 18-03-2003 à 07:45:06  profilanswer
 

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
n°336058
bobuse
Posté le 18-03-2003 à 09:31:52  profilanswer
 

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
n°336221
the real m​oins moins
Posté le 18-03-2003 à 12:07:04  profilanswer
 

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 ?
n°338135
phenixl
Posté le 20-03-2003 à 01:47:18  profilanswer
 

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
n°338138
the real m​oins moins
Posté le 20-03-2003 à 01:58:02  profilanswer
 

[: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 ?
n°338142
phenixl
Posté le 20-03-2003 à 03:11:08  profilanswer
 

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:

n°338177
El_gringo
Posté le 20-03-2003 à 08:53:16  profilanswer
 

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...

n°338246
darklord
You're welcome
Posté le 20-03-2003 à 10:03:13  profilanswer
 

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
n°338250
Predicator
Posté le 20-03-2003 à 10:11:59  profilanswer
 

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
n°338273
krosso
j'suis à la bourre
Posté le 20-03-2003 à 10:40:40  profilanswer
 

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
n°338288
phenixl
Posté le 20-03-2003 à 10:51:51  profilanswer
 

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 ? ;)

n°338333
Predicator
Posté le 20-03-2003 à 11:46:57  profilanswer
 

krosso a écrit :

Citation :

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

stune méthode  ;)


 :whistle:

n°338346
bobuse
Posté le 20-03-2003 à 11:57:52  profilanswer
 

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


---------------
get amaroK plugin
n°600766
veryfree
Posté le 02-01-2004 à 15:49:02  profilanswer
 

bobuse a écrit :

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


 
hachaifaire?

n°1754874
SpecialCha​racter
Posté le 03-07-2008 à 08:52:46  profilanswer
 
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Retrouver le répertoire de ma classe principale

 

Sujets relatifs
[ Delphi ] {OOP} visibilite dans une classe VCLLog4j ou classe de log faite "maison" ?
[js / css] modifier une classe dynamiquement ![JAVA] classe Date deprecated ? c grave ?
retrouver tous les nom des champs d'un formulaire[ Delphi ] Supprimer un repertoire et son contenu
Classe dans un package et un autre non, accès impossible ?classe Pattern en utilisation internationale. [résoudu]
repertoire renommable ou pas?? [vb6]Comment afficher les miniatures des images d'un répertoire ??
Plus de sujets relatifs à : Retrouver le répertoire de ma classe principale


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR