[java] Lecture des variables d'environement de windows [résolu]

Lecture des variables d'environement de windows [résolu] [java] - Java - Programmation

Marsh Posté le 17-05-2002 à 18:16:29    

Voilà je cherche à lire la variable d'environement "tmp".
 
Il y a bien dans la class System une methode Getproperty("" )
Ya plein de key différentes mais pas le repertoire temp de l'utilisateur  :(  
 
La methode getEnv ne marche pas ...
 
Ma question est donc connaissez vous un moyen de lire des variables d'environement avec JAVA ???
 
Merci de vos réponses.

 

[jfdsdjhfuetppo]--Message édité par Pulpipi le 24-05-2002 à 14:54:56--[/jfdsdjhfuetppo]


---------------
Mon photoBlog quilaibien -- Galerie HFR
Reply

Marsh Posté le 17-05-2002 à 18:16:29   

Reply

Marsh Posté le 17-05-2002 à 18:33:09    

Bon ben j'ai trouvé (c t pas dans le java doc)
Comme quoi google c kewl  [:roy_r]  
 
En fait c'était tout con.
pour info :
System.out.println("TEMP : " + System.getProperty("java.io.tmpdir" ));
 
Edit : je vais même mettre la page ou il y a plein de jolies infos.
http://www.rgagnon.com/javadetails/java-0150.html
 :hello:

 

[jfdsdjhfuetppo]--Message édité par Pulpipi le 17-05-2002 à 18:41:02--[/jfdsdjhfuetppo]


---------------
Mon photoBlog quilaibien -- Galerie HFR
Reply

Marsh Posté le 17-05-2002 à 22:21:01    

attention. Avec ca tu perds la portabilité (cette variable n'est dispo que sous windows)


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

Marsh Posté le 17-05-2002 à 23:13:50    

juste pour dire que ce site est merveilleux!
dark si tu pouvai l ajouter ds la FAQ ce serait cool
 
 
 
 :hello:

Reply

Marsh Posté le 17-05-2002 à 23:23:09    

a mon avis il vaut mieux essayer d'utiliser:

Code :
  1. java.io.File.createTempFile(...);


 
qui lui est portable...
 
Renaud

Reply

Marsh Posté le 18-05-2002 à 00:18:26    

DarkLord a écrit a écrit :

attention. Avec ca tu perds la portabilité (cette variable n'est dispo que sous windows)  




 
Oui je sais pour la portabilité
Mais pour l'appli que j'utilise c pas grave vu qu'elle n'est pas portable (appli C++ + MFC)


---------------
Mon photoBlog quilaibien -- Galerie HFR
Reply

Marsh Posté le 18-05-2002 à 09:16:27    

veryfree a écrit a écrit :

juste pour dire que ce site est merveilleux!
dark si tu pouvai l ajouter ds la FAQ ce serait cool
 
 
 
 :hello:  




 
ok


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

Marsh Posté le 23-05-2002 à 18:05:20    

p$$$$$ mais qu'est-ce qu'ils ont tous a vouloir acceder aux variables d'env de windows, a lancer des .exe et tout ça?
ferait pas mieux de faire des .BAT ces gens là ??  :fou:

Reply

Marsh Posté le 23-05-2002 à 18:07:05    

greg@freestarthu a écrit a écrit :

p$$$$$ mais qu'est-ce qu'ils ont tous a vouloir acceder aux variables d'env de windows, a lancer des .exe et tout ça?
ferait pas mieux de faire des .BAT ces gens là ??  :fou:  




 
 :jap:


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

Marsh Posté le 23-05-2002 à 18:07:24    

c'est comme les "gens" qui utilisent des BigDecimal à la place d'un bete double :D


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

Marsh Posté le 23-05-2002 à 18:07:24   

Reply

Marsh Posté le 23-05-2002 à 18:09:14    

DarkLord a écrit a écrit :

c'est comme les "gens" qui utilisent des BigDecimal à la place d'un bete double :D  




 :hello:

Reply

Marsh Posté le 23-05-2002 à 19:49:30    

je crois que le probleme ne vien pas des .bat c juste que la plupart des gens ne savent pas lancer un prgramme ni ce qu est une machine virtuel.
en gros
qd tu fait des programmes clients en java  
c est plus facile de les distibuer et donc de les faire connaitre lorsque t a pas 20Mo a télécharger  
voila l interet des exe a mes yeux
parce que moi je sait lancer un prog mais c po tj evident pour les newbies

Reply

Marsh Posté le 23-05-2002 à 20:03:11    

greg@freestarthu a écrit a écrit :

p$$$$$ mais qu'est-ce qu'ils ont tous a vouloir acceder aux variables d'env de windows, a lancer des .exe et tout ça?
ferait pas mieux de faire des .BAT ces gens là ??  :fou:  




 
Pour info, je ne cherche absoluement pas à lancer de .exe ou autre ...
 
J'ai juste une application serveur dévelloppée sous Visual C++ qui permet le stockage d'infos dans des bases Lotus Notes.
 
En gros, ces infos qd tu les edites les modifies etc, il se crée un fichier dans le répertoire temp de windows, et une fois tes modifs termiées les modification sont ratachées dans la base Notes et le fichier supprimé. (classique quoi ...)
 
Moi j'ai dévellopé une application qui permet des visualiser ces infos à partir du web en faisant une Webapp (JSP+servlet), et bêtement j'avais besoin de la variable d'environnement "tmp" de windows car ce sont là que sont stockée mes infos.
 
Donc je part du principe que vos remarques très interessantes ne me concerne aucunnement.
 
Et merci je sais lancer un programme.
 
A bon entendeur salut les kadors ...
 
 :hello:
 
Edit : je suis assé d'accord avec ta remarque veryfree.

 

[jfdsdjhfuetppo]--Message édité par Pulpipi le 23-05-2002 à 20:04:44--[/jfdsdjhfuetppo]


---------------
Mon photoBlog quilaibien -- Galerie HFR
Reply

Marsh Posté le 23-05-2002 à 23:13:44    

pourquoi est ce que tu ne mettais pas simplement le répertoire temporaire en paramètre de ta servelt ?

Reply

Marsh Posté le 24-05-2002 à 10:26:17    

benou a écrit a écrit :

pourquoi est ce que tu ne mettais pas simplement le répertoire temporaire en paramètre de ta servelt ?  




 
Ben, quoi qu'il arrive, j'ai besoin de connaitre le repertoire temp de windows (coté serveur)...
Et il peut etre different suivant l'endroit ou tu déploie ton application et l'utilisateur peut le changer si il le souhaite (ok, je suis d'accord c'est peu probable).
En gros c'est juste pour des soucis d'installation, pour ne pas être olbiger de figer cette variable.


---------------
Mon photoBlog quilaibien -- Galerie HFR
Reply

Marsh Posté le 24-05-2002 à 10:35:15    

greg@freestarthu a écrit a écrit :

p$$$$$ mais qu'est-ce qu'ils ont tous a vouloir acceder aux variables d'env de windows, a lancer des .exe et tout ça?
ferait pas mieux de faire des .BAT ces gens là ??  :fou:  




 
Et y a pas moyen d'accèder à une variable d'environnement, quel que soit l'OS ?
Parce que moi, je vois vraiement pas comment je pourrait faire. Je m'explique :
J'ai une servlet. Cette servlets à besoin de plein d'infos de paramètrage, je vais donc utiliser un fichier properties. Mais y a une info que je pourrais pas récupérer dans ce fichier, c'est la localisation de ce fichier justement.
Alors j'aurai bien voulu faire que, pour installer ma servlet, on définise une variable d'environnement MA_SERVLET_PATH = C:\MaServlet\ (ou =/MaSerlvet si on est ss Unix par exemple). Parce qu'avec ma servlet, je vois qu'on peut récupérer l'url de ma servlet, mais je vois pas comment récupérer le Path des fichiers .java de la servlet (ou le path de la servlet, où j'aurait pu obliger à mettre le fichier properties).
Voila...

 

[jfdsdjhfuetppo]--Message édité par el_gringo le 24-05-2002 à 10:44:00--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 24-05-2002 à 10:51:01    

Darklord et les autres Javaphiles ne sont pas là !?
(c pas la peine de répondre à cette question. Finalement, c'est qu'un UP ! :D)

 

[jfdsdjhfuetppo]--Message édité par el_gringo le 24-05-2002 à 10:51:39--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 24-05-2002 à 11:03:41    

mais pourquoi vous vous servais pas des fichiers de config ?????
c'est fait pour ca !
je parle du fichier web.xml

 

[jfdsdjhfuetppo]--Message édité par benou le 24-05-2002 à 11:04:05--[/jfdsdjhfuetppo]


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 24-05-2002 à 11:11:46    

benou a écrit a écrit :

mais pourquoi vous vous servais pas des fichiers de config ?????
c'est fait pour ca !
je parle du fichier web.xml  




 
web.xml. c le truc qui prend la suite de win.ini en gros !?
et c'est présent sur tous les OS ça !?

Reply

Marsh Posté le 24-05-2002 à 11:15:03    

Ok, je viens de comprendre, dsl.
En fait, un fichier xml est associé à une servlet en fait, c ça !?
Et je fais comment pour insérer et récupérer des infos dedant !?

Reply

Marsh Posté le 24-05-2002 à 11:15:24    

el_gringo a écrit a écrit :

Ok, je viens de comprendre, dsl.
En fait, un fichier xml est associé à une servlet en fait, c ça !?
Et je fais comment pour insérer et récupérer des infos dedant !?  
ça peut même remplacer mon fichier properties, non ?



Reply

Marsh Posté le 24-05-2002 à 11:18:13    

c'est un fichier qui permet de configurer une application web.
 
Regarde les exemples de fichiers web.xml fournis avec tomcat par exemple.
Dedeans, tu peux fixer des paramètres pour tes servelts. Ces paramètres pourront être récupérer lors de l'initialisation de la servlet dans l'objet ServletConfig (si je me souviens bien)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 24-05-2002 à 11:29:16    

benou a écrit a écrit :

c'est un fichier qui permet de configurer une application web.
 
Regarde les exemples de fichiers web.xml fournis avec tomcat par exemple.
Dedeans, tu peux fixer des paramètres pour tes servelts. Ces paramètres pourront être récupérer lors de l'initialisation de la servlet dans l'objet ServletConfig (si je me souviens bien)  




 
Ouais, presque, en fait ServletConfig, c une interface, et GenericServlet (la classe de base d'une servlet) l'implémente. Du coup c génial, merci beaucoup Benou. Plus de fichier properties. La config se fera entièrement dans le fichier web.xml.
c plus logique, non !?

Reply

Marsh Posté le 24-05-2002 à 11:31:59    

Mais en fait, en Java, plus généralement, je comprend pas un truc.
Je viens de voir que GenericServlet à aussi une méthode getServletConfig qui rend l'objet ServletConfig associé à la servlet. Mais ServletConfig est une interface. On récupère une instance d'une interface, j'croyais qu'on pouvait pas instancier une interface !!!?

Reply

Marsh Posté le 24-05-2002 à 12:08:27    

el_gringo a écrit a écrit :

Mais en fait, en Java, plus généralement, je comprend pas un truc.
Je viens de voir que GenericServlet à aussi une méthode getServletConfig qui rend l'objet ServletConfig associé à la servlet. Mais ServletConfig est une interface. On récupère une instance d'une interface, j'croyais qu'on pouvait pas instancier une interface !!!?  




 
la methode getServletConfig te renvoie une instance d'une classe qui implemente cette interface
subtile nuance:)
 
***
quant au truc de repertoire temporaire(-->Pulpipi), y'a une methode createTemporaryFile ou qqch comme ça dans la classe File qui sert exactement a ce que tu veux faire (le coup du .exe ct pas pour toi, mais ct un msg general a pleins de gens qui veulent acceder a tout prix a des trucs qui sont "os dependant" )

 

[jfdsdjhfuetppo]--Message édité par greg@freestarthu le 24-05-2002 à 12:09:04--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 24-05-2002 à 12:22:34    

greg@freestarthu a écrit a écrit :

 
la methode getServletConfig te renvoie une instance d'une classe qui implemente cette interface
subtile nuance:)




 
Dans la doc java des servlets, c marqué que getServletConfig rend un objet ServletConfig.
ServletConfig est une interface, il ne peut donc, logiquement, pas exister une class du même nom qui implémente cette interface, si !?
Bref, en fait, comment on utilise cette méthode getServletConfig.
On récupère quoi comme objet alors !?
On peut pas faire:

Code :
  1. ServletConfig MaConfig = getServletContext();


Si !?

Reply

Marsh Posté le 24-05-2002 à 13:31:55    

faut pas voir les choses comme ca !
 
Une interface c'est comme un cahier des charges. Ca définit les opération qu'un objet devra pouvoir faire.
 
la méthode getServletContext() te renvoie un Objet (peut importe son type). Ce qui est important c'est que tu sait qu'elle remplie le contrat "ServletConfig", donc tu peux appeler toutes les opérations qui sont définietn dans ServletConfig.
 
Donc, effectivement, l'objet que tu récupères n'est  une instance de "ServletConfig". Mais  on peut quand même considérer qu'elle est du type ServletConfig puisqu'elle sait faire tout ce qu'une ServletConfig doit savoir faire.
 
C'est pour ca que l'héritage est appelée une relation "est un" (ou "is a" )
 
par exemple :  
   - un Vector est une Collection
   - une String est un Object
   - etc ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 24-05-2002 à 13:41:19    

benou a écrit a écrit :

...
C'est pour ca que l'héritage est appelée une relation "est un" (ou "is a" )
 
par exemple :  
   - un Vector est une Collection
   - une String est un Object
   - etc ...  




 
on dit "implemente", hahem, comme je l'ai dit plutot quoi
(ArrayList implemente Collection etc)

Reply

Marsh Posté le 24-05-2002 à 13:58:52    

:sarcastic: y a pas qu'un mot
 
je parlais des relations "is a" et "has a". C'est un vocabulaire souvent employé quand on parle d'architcture objet : héritage vs. composition
 
http://www.google.fr/search?hl=fr& [...] a%22&meta=


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 24-05-2002 à 14:04:34    

benou a écrit a écrit :

faut pas voir les choses comme ca !
 
Une interface c'est comme un cahier des charges. Ca définit les opération qu'un objet devra pouvoir faire.
 
la méthode getServletContext() te renvoie un Objet (peut importe son type). Ce qui est important c'est que tu sait qu'elle remplie le contrat "ServletConfig", donc tu peux appeler toutes les opérations qui sont définietn dans ServletConfig.
 
Donc, effectivement, l'objet que tu récupères n'est  une instance de "ServletConfig". Mais  on peut quand même considérer qu'elle est du type ServletConfig puisqu'elle sait faire tout ce qu'une ServletConfig doit savoir faire.
 
C'est pour ca que l'héritage est appelée une relation "est un" (ou "is a" )
 
par exemple :  
   - un Vector est une Collection
   - une String est un Object
   - etc ...  




 
Je sais.
Mais du coup, cette écriture là:

Code :
  1. ServletConfig MaConfig = getServletContext();


Ne passe pas à la compile, si !?
à la limite, je pourrais par contre faire:

Code :
  1. GenericServlet MaConfig = getServletContext();


(sachant que GenericServlet implémente ServletConfig)
 
c ça !?

 

[jfdsdjhfuetppo]--Message édité par el_gringo le 24-05-2002 à 14:05:11--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 24-05-2002 à 14:18:09    

greg@freestarthu a écrit a écrit :

 
 
la methode getServletConfig te renvoie une instance d'une classe qui implemente cette interface
subtile nuance:)
 
***
quant au truc de repertoire temporaire(-->Pulpipi), y'a une methode createTemporaryFile ou qqch comme ça dans la classe File qui sert exactement a ce que tu veux faire (le coup du .exe ct pas pour toi, mais ct un msg general a pleins de gens qui veulent acceder a tout prix a des trucs qui sont "os dependant" )  
 
 




 
Ok j'ai vu  :)  
Pour info la propriété système "java.io.tempdir" marche ausi bien sur les systemes UNIX que sur les systemes Win32.
 

Citation :


The default temporary-file directory is specified by the system property java.io.tmpdir. On UNIX systems the default value of this property is typically "/tmp" or "/var/tmp"; on Win32 systems it is typically "c:\\temp".

 

[jfdsdjhfuetppo]--Message édité par Pulpipi le 24-05-2002 à 14:19:12--[/jfdsdjhfuetppo]


---------------
Mon photoBlog quilaibien -- Galerie HFR
Reply

Marsh Posté le 24-05-2002 à 14:45:01    

benou a écrit a écrit :

:sarcastic: y a pas qu'un mot
 
je parlais des relations "is a" et "has a". C'est un vocabulaire souvent employé quand on parle d'architcture objet : héritage vs. composition
 
http://www.google.fr/search?hl=fr& [...] a%22&meta=  




okie :)

Reply

Marsh Posté le 24-05-2002 à 14:46:41    

el_gringo a écrit a écrit :

 
Je sais.
Mais du coup, cette écriture là:

Code :
  1. ServletConfig MaConfig = getServletContext();


Ne passe pas à la compile, si !?
à la limite, je pourrais par contre faire:

Code :
  1. GenericServlet MaConfig = getServletContext();


(sachant que GenericServlet implémente ServletConfig)
c ça !?  




bha non :

Code :
  1. ServletConfig MaConfig = getServletContext();

ca marche très bien.
et la solution dont tu parlais après ne marchait pas :  
 - d'abord parce qu'il faudrait faire un cast
 - ensuite parce qu'il n'y a aucune raison pour que tu fasses une suposition sur la nature de l'objet qui t'es renvoyer


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 24-05-2002 à 14:54:08    

benou a écrit a écrit :

 
bha non :

Code :
  1. ServletConfig MaConfig = getServletContext();

ca marche très bien.
et la solution dont tu parlais après ne marchait pas :  
 - d'abord parce qu'il faudrait faire un cast
 - ensuite parce qu'il n'y a aucune raison pour que tu fasses une suposition sur la nature de l'objet qui t'es renvoyer  




 
Ok, je saisi à peu près.
Mais je trouve un peu troublant.
Avec cette écriture, on dirait qu'on récupère l'instance d'une interface avec la fonction getServletContext().
Mais en fait, on récupère l'instance d'un objet (on sait pas lequel) qui implémente ServletConfig.  
C ça !?

Reply

Marsh Posté le 24-05-2002 à 14:55:55    

el_gringo a écrit a écrit :

 
 
Ok, je saisi à peu près.
Mais je trouve un peu troublant.
Avec cette écriture, on dirait qu'on récupère l'instance d'une interface avec la fonction getServletContext().
Mais en fait, on récupère l'instance d'un objet (on sait pas lequel) qui implémente ServletConfig.  
C ça !?  




:yaisse:

Reply

Marsh Posté le 24-05-2002 à 14:56:00    

mais tu t'en fous ce que tu récupères. CE que tu dois savoir lorsque tu récupères un objet c'est  : "qu'est ce que je peux faire avec". C'est justement génial ce mécanisme car l'implménetation interne peut changer (et donc te renvoyer un truc plus spécialisé avec un comportement plus spécifique à l'app serveur).
 
Tu récupères un objet et tu sais que celui ci offre les fonctionnalités X Y Z.
 
Avoir un type de retour une interface ne signifie PAS que tu vas récupérer une interface pour la simple et bonne raison qu'une interface ne peut etre instanciée (donc c'est impossible).
 
Voilà A+


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

Marsh Posté le 24-05-2002 à 15:02:10    

DarkLord a écrit a écrit :

mais tu t'en fous ce que tu récupères. CE que tu dois savoir lorsque tu récupères un objet c'est  : "qu'est ce que je peux faire avec". C'est justement génial ce mécanisme car l'implménetation interne peut changer (et donc te renvoyer un truc plus spécialisé avec un comportement plus spécifique à l'app serveur).
 
Tu récupères un objet et tu sais que celui ci offre les fonctionnalités X Y Z.
 
Avoir un type de retour une interface ne signifie PAS que tu vas récupérer une interface pour la simple et bonne raison qu'une interface ne peut etre instanciée (donc c'est impossible).
 
Voilà A+  




 
Bah justement, alors pourquoi je peux écrire:
ServletConfig MaConfig = getServletContext();  
Sachant que ServletConfig est une interface.
MaConfig semble bien être une instance de ServletConfig.
Mais en fait c une instance d'un objet quelconque qui implémente ServletConfig, c ça !?

Reply

Marsh Posté le 24-05-2002 à 15:07:22    

c'est ce qu'on se tue à te dire depuis tout à l'heure : tu t'en fous de ce qu'est réélement ton objet. La seule chose intéressante c'est ce que à quoi il peut te servir, c'est à dire ce que tu peux faire avec, c'est à dire les opérations qu'il permet de faire, c'est à dire son interface.


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 24-05-2002 à 15:08:36    

et pourquoi tu pourrais pas l'écrire vu que l'objet retourné par ServletConfig est un ServeltConfig ?


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 24-05-2002 à 15:09:32    

G compris.
Ms c pas si simple que ça a assimiler.
Mais Java, plus je découvre, et plus je trouve ce langage génialement bien fait.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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